使用带网络IP的自签名证书时出现ERR_SSL_VERSION_OR_CIPHER_MISMATCH错误
问题修复方案
一、修复Express代码中的语法错误
你的getCredentials函数里,fs.readFileSync调用存在括号语法错误,这会导致证书无法正确加载,直接引发SSL握手失败:
原错误代码片段:
let certificate = fs.readFileSync('/path/to/domain.crt'), 'utf8'); let certauth = fs.readFileSync('/path/to/rootCA.crt'), 'utf8');
修正后代码:
let certificate = fs.readFileSync('/path/to/domain.crt', 'utf8'); let certauth = fs.readFileSync('/path/to/rootCA.crt', 'utf8');
二、解决IP访问的SSL验证问题
修正代码后,确认以下两点:
- 确保
rootCA.crt已安装到浏览器的受信任根证书颁发机构列表中(localhost和机器名能正常访问,此步骤大概率已完成,可再检查确认)。 - 访问时直接使用
https://192.168.56.1,无需额外指定端口(你的服务器已监听默认HTTPS端口443)。
三、解决nip.io域名解析失败问题
DNS_PROBE_FINISHED_NXDOMAIN是域名无法解析导致的,可尝试以下操作:
- 终端执行
ping 192.168.56.1.nip.io,测试是否能解析到192.168.56.1的IP,若无法解析,说明当前DNS服务器不支持nip.io域名解析。 - 更换公共DNS服务器(如8.8.8.8、1.1.1.1)后重新尝试访问。
- 检查本地防火墙或代理是否拦截了nip.io域名的访问请求。
额外验证步骤
- 重新生成证书后,用以下命令检查证书的主题备用名称(SAN)是否包含配置的IP和nip.io域名:
输出需包含openssl x509 -in domain.crt -text -noout | grep -A 10 "Subject Alternative Name"IP Address:192.168.56.1和DNS:192.168.56.1.nip.io。 - 重启Express服务器,确保代码修改生效。
内容的提问来源于stack exchange,提问作者nick_j_white
相关产品推荐
相关产品推荐

