NodeJS 自签名证书仅适用于localhost,不适用于127.0.0.1

7cjasjjr  于 2023-03-17  发布在  Node.js
关注(0)|答案(2)|浏览(186)

我尝试生成一个自签名证书,这样我的本地开发环境就可以使用HTTPS,但我遇到了一些问题。原因是我想通过我的本地网络(通过我的本地IP 192.168.1.155)在我的手机上测试推送通知,而通知只能通过安全上下文工作。
它似乎只有在我转到localhost:8080时才起作用,并且在导航到127.0.0.1:8080时仍然不安全。当我导航到127.0.0.1:8080时,Chrome的安全页面显示:This site is missing a valid, trusted certificate (net::ERR_CERT_COMMON_NAME_INVALID).
下面是我用来生成证书的设置:
req.cnf:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = 127.0.0.1
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = 127.0.0.1
DNS.3 = 192.168.1.155

openssl req -newkey rsa:2048 -x509 -nodes -keyout key.pem -new -out cert.pem -config req.cnf -sha256 -days 3650
我想可能我的CNalt_names是不正确的,但我不确定如何更改它们,使网站始终安全地工作(通过localhost、127.0.0.1或192.168.1.155)

6pp0gazn

6pp0gazn1#

在一个没有预见到的橡皮鸭调试案例中,我似乎终于在发布后解决了这个问题。
req.cnf:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = VA
L = SomeCity
O = MyCompany
OU = MyDivision
CN = localhost
[v3_req]
keyUsage = critical, digitalSignature, keyAgreement
extendedKeyUsage = serverAuth
subjectAltName = DNS:localhost,IP:192.168.1.155,IP:127.0.0.1

命令提示符:

openssl req -newkey rsa:2048 -x509 -nodes -keyout key.pem -new -out cert.pem -config req.cnf -sha256 -days 3650

然后导航到Chrome中的页面,将证书保存为DER文件(因为它仍然是无效的),然后使用mmc.exe将其导入到您计算机上的受信任根证书颁发机构(假设您使用的是Windows)

wixjitnu

wixjitnu2#

开发建议的另一个选项是在chrome中设置一个标志。

chrome://flags/#unsafely-treat-insecure-origin-as-secure

启用它,并确保在提供的框中添加带有开发服务器端口的IP

相关问题