2012-07-29 119 views
7

可能重复:
How are SSL certificate server names resolved/Can I add alternative names using keytool?创建证书时的IP地址作为主机名(CN)? (HTTPS主机名错误:应该是<ipAddress>)

我创建了一个证书和CN设置为我的服务器的IP地址,该地址是在xxx.xxx .xxx.xxx格式。但是当我尝试在Java中运行我的代码时,出现HTTPS hostname wrong: should be <xxx.xxx.xxx.xx>错误消息。

出了什么问题?我确定我正在连接到正确的IP地址。但是,我没有在证书上指定服务器的端口。提供CN值时需要端口吗?但我使用的默认端口为8443的https。另外,我尝试将CN从我的服务器的IP地址更改为“localhost”。它在那之后起作用。我在考虑CN部分是否不接受IP地址作为值?

您能否介绍一下CN的工作原理以及它的所需价值?

谢谢!

+1

对于downvoters:根据定义的运行时特定的查找*(在本例中为Java运行时),因此在主题上,如果此问题为downvoted,话题可能不是一个很好的理由 – 2012-07-29 11:27:57

回答

22

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

证书的Subject DN中的通用名称RDN通常仅在以下情况下使用:(a)没有使用者备用名称DNS条目和(b)查找主机名称而不是IP地址。这在RFC 2818 Section 3.1定义:

如果类型DNSNAME的subjectAltName扩展存在,必须使用作为身份。否则,必须使用证书的主题字段中的(最具体的)通用 名称字段。 虽然使用的是通用名是现行做法,它是 过时,并且鼓励认证机构使用 DNSNAME代替。

[...]

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

一般情况下,在证书中使用的IP地址是不建议(见RFC 6125提到的问题。但是,如果你真的需要,你需要与IP地址的证书是IP地址类型的SAN入门,您可以按照this answer中描述的方式生成

+0

嗯,我的SSL正在生锈,投票你:) – 2012-07-29 17:33:59

相关问题