我正在使用npm包“http-server”(https://www.npmjs.com/package/http-server)来设置一个简单的Web服务器,但是我无法让它使用SSL。
http-server -p 8000 -o -S
在我的根目录下有一个cert.pem和key.pem(目前)。“-o”选项打开浏览器到默认页面,但该页面是使用HTTP提供的,甚至不能通过HTTPS访问。我没有收到任何错误或警告。我也尝试过添加“-C”和“-K”选项,但运气不好。有人成功地使用了这个包吗?
我正在使用npm包“http-server”(https://www.npmjs.com/package/http-server)来设置一个简单的Web服务器,但是我无法让它使用SSL。
http-server -p 8000 -o -S
在我的根目录下有一个cert.pem和key.pem(目前)。“-o”选项打开浏览器到默认页面,但该页面是使用HTTP提供的,甚至不能通过HTTPS访问。我没有收到任何错误或警告。我也尝试过添加“-C”和“-K”选项,但运气不好。有人成功地使用了这个包吗?
4条答案
按热度按时间i7uq4tfw1#
首先,确保您有
key.pem
和cert.pem
文件。您可以使用以下命令生成它们:输入命令后,系统将提示您几个问题。如果您希望能够在操作系统的根证书存储区或浏览器中安装证书以使其可信,请使用
127.0.0.1
作为“公用名”的值。这将生成一个证书-密钥对,其有效期大约为10年(确切地说是3650天)。
然后,您需要使用
-S
运行服务器以启用SSL,并使用-C
运行证书文件:xxb16uws2#
我安装了
mkcert
:然后,在项目目录中:
最后,我重命名生成的文件:
0.0.0.0+3-key.pem
-〉key.pem
0.0.0.0+3.pem
-〉cert.pem
并运行以下命令:
然后我得到:
我引用了这个博客:https://qiita.com/walkers/items/b90a97a99bbb27f6550f(用日语编写)
pftdvrlh3#
为了便于将来参考,我的问题通过将package.json中的包更新到最新版本得到了解决。我复制粘贴了一个旧的示例文件,但没有更新版本号。
mbzjlibv4#
编辑:自从写了这个答案后,有一个新的工具mkcert可以帮你完成这个任务。请参见https://stackoverflow.com/a/61905546/9540493。下面是我的原始答案,以了解历史。
Firefox不接受自签名证书,因此需要更多的工作。首先创建一个CA:
将ca.pem(本地主机CA)添加到操作系统和/或Firefox(其他浏览器使用系统CA)的可信证书中。将ca* 文件保存在安全位置以备将来使用,这样您就不必再次执行此操作。
然后,对于您正在运行的任何站点,无论何时您希望更改设置,都可以使用以下命令创建cert.pem和key.pem:
以上命令应该可以在大多数系统上使用。如果不能,您可能需要创建临时文件ecparam.tmp和ext.tmp。命令在功能上相当于这两个oneliner: