npm http-server with SSL

del*_*svb 50 ssl httpserver node.js npm

我正在使用npm包"http-server"(https://www.npmjs.com/package/http-server)来设置一个简单的网络服务器,但我无法使用SSL.我在package.json中的命令是

http-server -p 8000 -o -S
Run Code Online (Sandbox Code Playgroud)

在我的根目录中使用cert.pem和key.pem(现在)."-o"选项将浏览器打开到默认页面,但页面使用HTTP提供,甚至无法通过HTTPS访问.我没有收到任何错误或警告.我也尝试过添加"-C"和"-K"选项而没有运气.这个套餐有没有成功?

slo*_*mek 131

首先,确保你拥有key.pemcert.pem文件.您可以使用以下命令生成它们:

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
Run Code Online (Sandbox Code Playgroud)

输入命令后,您将被提出几个问题.127.0.0.1如果您希望能够在操作系统的根证书存储区或浏览器中安装证书以使其受信任,请用作"公用名"的值.

这将生成一个证书密钥对,它将有效约10年(确切地说是3650天).

然后,您需要运行服务器以-S启用S​​SL和-C证书文件:

$ http-server -S -C cert.pem -o
Starting up http-server, serving ./ through https
Available on:
  https:127.0.0.1:8080
  https:192.168.1.101:8080
  https:192.168.1.104:8080
Hit CTRL-C to stop the server
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,如果您需要来自CA的证书,建议您使用https://letsencrypt.org/。它在这里解决了我们的问题。干杯! (3认同)
  • 使用 Chrome 66 我必须在 chrome://flags 中为从本地主机加载的资源启用允许无效证书,因为它说它不受信任 (3认同)
  • @K-Dawg - 您将需要传递另一个选项 -K certs/key.pem (2认同)

yum*_*rry 28

我安装了mkcert

brew install mkcert
brew install nss # if you use Firefox
Run Code Online (Sandbox Code Playgroud)
mkcert -install
Run Code Online (Sandbox Code Playgroud)

然后,在您的项目目录中:

mkcert 0.0.0.0 localhost 127.0.0.1 ::1
Run Code Online (Sandbox Code Playgroud)

最后,我重命名了生成的文件:

  • 0.0.0.0+3-key.pem -> key.pem
  • 0.0.0.0+3.pem -> cert.pem

并运行以下命令:

http-server -S -C cert.pem -o
Run Code Online (Sandbox Code Playgroud)

然后我得到:

在此处输入图片说明

我参考了这个博客:https : //qiita.com/walkers/items/b90a97a99bbb27f6550f (日文写的)

  • 我在使用投票最高的解决方案时遇到了麻烦,但这非常有效! (2认同)

del*_*svb 2

仅供将来参考,通过将 package.json 中的包更新到最新版本解决了我的问题。我复制粘贴了一个旧的示例文件,但没有更新版本号。