用于访问 Jira 服务器的主机名(例如,https://jira.acme.com/ 中的 jira.acme.com)必须与使用者名称的 CN
字段之一匹配,或者如果不是,则必须与证书的使用者备用名称
之一匹配。
RFC 2818 中对此进行了详细介绍:
在某些情况下,URI 被指定为 IP 地址而不是主机名。在这种情况下,iPAddress 使用者别名必须存在于证书中,并且必须与 URI 中的 IP 完全匹配。
在你的情况下,Java正在抱怨,因为CN
(“未知”)和主题备用名称
(因为你没有)都与Jira服务器的主机名不匹配。
因此,使用适当的 CN
生成证书,例如使用 :keytool
创建密钥对和自签名证书
$ keytool -genkey -alias jira_acme_com -keyalg RSA -keysize 2048 -validity 365 -keystore jira_acme_com.jks
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: jira.acme.com
What is the name of your organizational unit?
[Unknown]: Our project
What is the name of your organization?
[Unknown]: Our company
What is the name of your City or Locality?
[Unknown]: Our town
What is the name of your State or Province?
[Unknown]: NJ
What is the two-letter country code for this unit?
[Unknown]: US
Is CN=jira.acme.com, OU=Our project, O=Our company, L=Our town, ST=NJ, C=US correct?
[no]: y
Enter key password for
(RETURN if same as keystore password):
查看个人信息
$ keytool -list -v -keystore jira_acme_com.jks
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
Alias name: jira_acme_com
Creation date: Sep 4, 2010
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=jira.acme.com, OU=Our project, O=Our company, L=Our town, ST=NJ, C=US
Issuer: CN=jira.acme.com, OU=Our project, O=Our company, L=Our town, ST=NJ, C=US
Serial number: 4c81e9a9
Valid from: Sat Sep 04 10:39:37 CEST 2010 until: Sun Sep 04 10:39:37 CEST 2011
Certificate fingerprints:
MD5: 15:6A:E3:14:E2:78:F4:95:41:E6:33:C9:F8:8B:64:23
SHA1: CD:A6:9A:84:18:E8:62:50:2C:DC:2F:89:22:F6:BA:E9:1A:63:F6:C6
Signature algorithm name: SHA1withRSA
Version: 3
并设置 Tomcat 以使用密钥库。
当然,如果要创建多宿主证书,则必须使用 OpenSSL(keytool 无法添加 X509 扩展,如使用者备用名称)。这些链接是很好的资源:
更新:鉴于您无法更改证书(您确实应该提到这一点),临时解决方案可能是更改所需计算机的本地文件以解析为计算机的真实IP。/etc/hosts
Unknown
123.123.123.123 Unknown
以便您可以从这些计算机访问 https://Unknown/。但显然,这更像是一个肮脏的黑客,而不是一个真正的解决方案,并且无法扩展。
联系管理员以获得真正的“好”证书仍然是真正的好解决方案。
资源
引用