node.js - 自签名证书仅适用于 localhost,不适用于 127.0.0.1

标签 node.js ssl https openssl secure-context

我正在尝试生成一个自签名证书,以便我的本地开发环境使用 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).
这是我用来生成证书的设置:

请求.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)

最佳答案

在一个意外的橡皮鸭调试案例中,我似乎在发布后暂时解决了这个问题。这是我所做的:

请求.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)

关于node.js - 自签名证书仅适用于 localhost,不适用于 127.0.0.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60030906/

相关文章:

c# - asp.net,使用服务器证书制作httpwebrequest C#

mysql - 当我发布到我最新的 MySQL 表时出现 ReactJS 错误

java - keystore 类型 : which one to use?

security - 如何使用 windows api 用 ssl 透明地包装 tcp/ip 请求

ssl - 服务器是否仅使用 Mosquitto 的 CA 证书加密从客户端到服务器的消息

amazon-web-services - AWS 在负载均衡器监听器上设置 https SSL

ssl - Lighttpd:仅启用了 SSLv3,但使用了 TLSv1.2

javascript - 有没有办法检查用户是否使用express.Router中间件登录?

node.js - 获取 Github 存储库关注者的电子邮件地址

javascript - 如何让 Istanbul 与 Sails.js 0.10.x 一起使用?