一行https服务器

时间:2014-11-06 22:37:00

标签: http https

有很多单行HTTP服务器可用,例如

的Python

python -m SimpleHTTPServer 8000

红宝石

ruby -run -ehttpd . -p8000

是否有1行https服务器?如果他们生成自己的自签名证书,甚至更好。少数几行也可以使用。

6 个答案:

答案 0 :(得分:3)

Ruby 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'

我使用Ruby 2.1.2测试过。

答案 1 :(得分:2)

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")))'

为了便于阅读,上面的命令已拆分为多行;它也可以作为单行输入。

答案 2 :(得分:1)

使用OpenSSL的s_server实用程序非常简单。我刚刚使用它来帮助在真正的后端准备好之前测试负载平衡器配置(不是为了提供内容本身)。第一行创建自签名证书。

str

有关详细信息,请参阅s_server的手册页。

答案 3 :(得分:1)

避免以下chrome错误:
服务器具有弱短暂的Diffie-Hellman公钥
您需要提供一组足够强大以满足chrome要求的密码,例如:

 -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

答案 4 :(得分:1)

如果您想同时使用HTTP和HTTPS侦听器进行测试(并在服务器重新启动之前保持运行):

#Start an HTTP server with directory browsing
mkdir /tmp/www
cd  /tmp/www; touch "$(hostname).txt"
sudo nohup python -m SimpleHTTPServer 80 > simplehttpserver.out &

#Start an HTTPS listener with some debug responses (I wonder if you can pipe to the HTTP server)
openssl req -x509 -newkey rsa:4096 -nodes -sha256 -keyout /tmp/key.pem -out /tmp/cert.pem -days 365 #Create self signed key. Only need this once and it will ask a few questions
sudo nohup openssl s_server -key /tmp/key.pem -cert /tmp/cert.pem -accept 443 -cipher kRSA+RSA -www > openssl.out &

答案 5 :(得分:1)

Browsersync做得很好。

安装方式

npm i -g browser-sync

通过

提供当前目录的内容
browser-sync start -s --https

无需设置。有关其他功能,请参见docs