2015-05-25 1 views
3

есть простой пример включения HTTPS в Snap-сервере? Я не это в OpenSsl и его использование с помощью Snap. ThanksКак включить HTTPS через Snap-сервер?

+2

Вы посмотрели http://snapframework.com/faq#how-do-i-enable-ssl? Где вы застряли? –

+0

Я читал, да. Я думал, что это будет что-то более программное, прямо с сервера, написанное в приложении, используя одну из этих [функций] (https://hackage.haskell.org/package/snap-server-0.9.5.1/docs/Snap- Http-Server-Config.html) –

+0

@JPMoresmau Официальная документация об этом вводит в заблуждение, поскольку предполагает, что вы используете внутренний парсинг аргументов cli через 'commandLineAppConfig', который может быть или не быть правдой, в зависимости от вашего проекта. – hasufell

ответ

2

JP Moresmau показал вам, как включить его из командной строки, но сделать то же самое программно так же просто. Функция, которая запускает основной цикл Snap, принимает в качестве первого аргумента параметр конфигурации, как вы можете видеть in this bit of documentation. Вы можете просто позвонить defaultConfig с модуля Snap.Http.Server.Config, а затем позвонить setSSLPort, setCert и setSSLKey на нем. Затем вы можете передать эту новую конфигурацию в httpServe в качестве первого аргумента. Если вы использовали snap init, вы можете найти все соответствующие коды в своем src/Main.hs.

Как вы можете видеть here, конфигурация по умолчанию создается из командной строки с использованием a description of options. Поэтому изменение defaultConfig в точности совпадает с передачей аргументов командной строки.

Что я нахожу немного странным, так это то, что нет defaultSSLConfig, который генерирует самозаверяющий сертификат, чтобы вы могли быстро попробовать SSL. Кроме того, это нечетный сертификат и ключи имеют тип FilePath. Может быть, это хороший запрос на получение команды Snap для проверки?