2014-11-06 2 views
2

Существует достаточно нескольких HTTP-серверов с одной строкой, например.Одна строка https-сервера

Python

python -m SimpleHTTPServer 8000 

Рубин

ruby -run -ehttpd . -p8000 

т.д.

Есть ли 1 линия HTTPS серверов? Если они генерируют свои собственные самоподписанные сертификаты, еще лучше. Будет работать и небольшое количество строк.

ответ

2

Рубин WEBrick documentation имеет section on HTTPS. Мне нужно добавить DocumentRoot и .start и прибыл на это:

ruby -r webrick/https -e ' 
    WEBrick::HTTPServer.new(
    Port: 8000, DocumentRoot: ".", 
    SSLEnable: true, SSLCertName: [%w[CN localhost]]).start' 

я тестировал с Руби 2.1.2.

+0

Это потрясающе! Благодаря! –

1

Hunchentoot может быть использован для этой цели. Одна строка довольно длинная, но не невозможная. Однако вам нужно будет предоставить сертификат и ключ из файлов.

sbcl --eval '(progn 
    (and nil #.(require "hunchentoot")) 
    (setq hunchentoot:*dispatch-table* 
     (list (hunchentoot:create-folder-dispatcher-and-handler "/" "'`pwd`/'"))) 
    (hunchentoot:start (make-instance (quote hunchentoot:easy-ssl-acceptor) 
            :port 8443 
            :ssl-privatekey-file "../cert.key" 
            :ssl-certificate-file "../cert.crt")))' 

Вышеприведенная команда была разделена на несколько строк для удобства чтения; его можно ввести как одну строку.

+0

Спасибо, это потрясающе! –

1

Оказывается довольно простым с помощью утилиты s_server от OpenSSL. Я только что использовал это, чтобы помочь проверить конфигурацию балансировки нагрузки до того, как будет готов реальный бэкэнд (чтобы не обслуживать контент per-se). Первая строка создает самозаверяющий сертификат.

openssl req -newkey rsa:2048 -nodes -x509 -subj '/CN=name-you-want.example.com' -days 3650 -out server.cert -keyout server.key 
openssl s_server -accept 7781 -cert server.cert -key server.key -WWW 

Дополнительную информацию см. На странице руководства для s_server.

+0

Отлично. Однако Chrome не одобряет шифрование: «Сервер имеет слабый эфемерный открытый ключ Diffie-Hellman» –

1

Чтобы избежать следующей хромированной ошибка:
Сервер имеет слабый эфемерный Диффи-Хеллмана открытого ключа
Вы должны предоставить набор шифров, которые достаточно сильны, чтобы удовлетворить требования хрома, например:

-cipher kRSA+RSA 

следующие работы для меня:

openssl req -x509 -newkey rsa:4096 -nodes -sha256 -keyout key.pem -out cert.pem -days 365 
openssl s_server -key key.pem -cert cert.pem -accept 443 -cipher kRSA+RSA