【问题标题】:IP address as hostname (CN) when creating a certificate? (HTTPS hostname wrong: should be <ipAddress>) [duplicate]创建证书时将 IP 地址作为主机名 (CN)? (HTTPS 主机名错误:应该是 <ipAddress>)[重复]
【发布时间】:2012-07-27 08:47:45
【问题描述】:

可能重复:
How are SSL certificate server names resolved/Can I add alternative names using keytool?

我创建了一个证书并将 CN 设置为我的服务器的 IP 地址,格式为 xxx.xxx.xxx.xxx。但是当我尝试在 Java 中运行我的代码时,我收到了 HTTPS hostname wrong: should be &lt;xxx.xxx.xxx.xx&gt; 错误消息。

可能出了什么问题?我确定我正在连接到正确的 IP 地址。但是,我没有在证书上指定服务器的端口。为 CN 提供值时是否需要端口?但我使用的是 https 的默认端口,即 8443。此外,我尝试将我的 CN 从服务器的 IP 地址更改为“localhost”。之后就可以工作了。我在想如果 CN 部分不接受 IP 地址作为值?

您能否解释一下 CN 的工作原理以及它所需的值是什么?

谢谢!

【问题讨论】:

  • 对于反对者:根据定义,查找名称 is 特定于运行时 - 在这种情况下针对 Java 运行时 - 因此是主题。如果这个问题被否决,离题可能不是一个很好的理由。

标签: java ssl https keytool


【解决方案1】:

您需要放入证书中的身份必须是您通过 URL 查找的身份。例如,如果您使用的是https://www.example.net,则您的证书需要对www.example.net 有效;如果您使用的是https://10.0.0.1/,您的证书需要对10.0.0.1 有效。

证书的主题 DN 中的通用名称 RDN 通常仅在 (a) 没有主题备用名称 DNS 条目和 (b) 它正在寻找主机名而不是 IP 地址时使用。这是在RFC 2818 Section 3.1 中定义的:

如果存在 dNSName 类型的 subjectAltName 扩展,则必须将其用作身份。否则,(最具体的)Common 必须使用证书主题字段中的名称字段。 虽然使用通用名称是现有的做法,但它是 已弃用,并鼓励证书颁发机构使用 改为 dNSName。

[...]

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

一般来说,不推荐在证书中使用IP地址(见RFC 6125中提到的问题。但是,如果你真的需要,你需要一个IP地址是IP地址类型的SAN条目的证书,您可以按照this answer 中的说明生成。

【讨论】:

  • 嗯,我的 SSL 生锈了,不如投票给你 :)
猜你喜欢
  • 1970-01-01
  • 2014-04-27
  • 2011-03-12
  • 2012-05-20
  • 2016-06-12
  • 2014-04-12
  • 2014-12-19
  • 2014-12-02
  • 1970-01-01
相关资源
最近更新 更多