首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Node.js只接受SAN证书中的IP地址,而不接受CN?

问为什么Node.js只接受SAN证书中的IP地址,而不接受CN?
EN

Stack Overflow用户
提问于 2012-12-30 10:14:06
回答 1查看 1.8K关注 0票数 5

正如我的回答 to 主机名/ IP与证书的altname不匹配中所指出的,当请求的主机名被指定为证书的公共名称(CN)时,Node.js会成功地验证主机名上的TLS证书。

代码语言:javascript
复制
Request    : localhost
Common Name: localhost
=> Success

现在,当我尝试相同的IP地址时,验证失败:

代码语言:javascript
复制
Request    : 192.168.178.31
Common Name: 192.168.178.31
=> Fail

只有当我将IP地址指定为Subject Alternative Name (SAN)时,它才能工作:

代码语言:javascript
复制
Request                 : 192.168.178.31
Common Name             : 192.168.178.31
Subject Alternative Name: 192.168.178.31
=> Success

如回答 to )中所述,

不建议在证书中使用IP地址.

作为另一种选择,在回答中建议将IP地址添加为SAN(这反过来在Node.js中工作)。

现在我的问题是:不推荐并不意味着错误或禁止。除了不建议Node.js不支持CNs中的IP地址之外,是否有任何特定的原因,或者为什么这会带来风险(安全,无论如何,.)如果是的话?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-30 11:39:30

该实现仅与HTTPS规范兼容。

在某些情况下,URI被指定为IP地址而不是主机名。在这种情况下,iPAddress subjectAltName必须存在于证书中,并且必须与URI中的IP完全匹配。

当我在你引用的答案中说“不推荐”时,更多的是在使用HTTPS时使用IP地址。有些浏览器让你可以不使用它,但我也引用了规范,它确实使用了“必须”这个词。不用说,RFC比你在这里找到的任何答案都更权威。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14089872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档