AFo*_*lia 16 java jira ssl-certificate hudson-plugins
我正在尝试设置Hudson JIRA插件.我们的JIRA服务器使用自签名SSL证书进行保护.我已经使用keytool命令插入了我的Web浏览器存储的证书,并让Hudson找到它.但现在抱怨:
java.security.cert.CertificateException: No subject alternative names present
Run Code Online (Sandbox Code Playgroud)
证书的通用名称是"未知",我在证书中看不到任何主题备用名称
$ openssl x509 -in Unknown -text -noout
Certificate:
Data:
Version: 1 (0x0)
Serial Number: 1214507595 (0x4863ea4b)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=US, ST=NJ, L=[Our town], O=[Our company], OU=[Our project], CN=Unknown
Validity
Not Before: Jun 26 19:13:15 2008 GMT
Not After : May 5 19:13:15 2018 GMT
Subject: C=US, ST=NJ, L=[Our town], O=[Our company], OU=[Our project], CN=Unknown
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
[omitted]
Signature Algorithm: md5WithRSAEncryption
[omitted]
Run Code Online (Sandbox Code Playgroud)
(识别已编辑的信息并在括号中注明.)
有没有办法将主题备用名称附加到此证书?或者还有其他方式吗?或者我被迫破解Hudson Jira插件?
Pas*_*ent 23
该主机名来访问您的吉拉服务器(例如jira.acme.com在 https://jira.acme.com/)必须要么匹配的一个CN主题名称的领域,或者当它不,的一个Subject Alternative Name的证书.
这在RFC 2818中有详细说明:
在某些情况下,URI被指定为IP地址而不是主机名.在这种情况下,iPAddress subjectAltName必须存在于证书中,并且必须与URI中的IP完全匹配.
在你的情况下,Java抱怨,因为CN("未知")和Subject Alternative Name(因为你没有)都没有匹配你的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扩展名,例如Subject Alternative Name).这些链接是很好的资源:
更新:鉴于您无法更改证书(您确实应该提到),临时解决方案可能是更改/etc/hosts所需计算机的本地文件以解析Unknown为计算机的真实IP.
123.123.123.123 Unknown
Run Code Online (Sandbox Code Playgroud)
这样您就可以从这些计算机访问https:// Unknown /.但很明显,这更像是一个肮脏的黑客,而不是一个真正的解决方案,并且不会扩展.
联系管理员以获得真正的"好"证书仍然是真正的好解决方案.
如果我没记错的话,SSL 要求证书的通用名称包含您尝试连接的主机名,这样客户端就可以验证该证书不仅在一般情况下受信任,而且在该位置也受信任。
我假设您正在使用 OpenSSL 生成证书。您没有设置的原因是什么cn=[yourserver]?
当插件在通用名称中找不到正确的主机名时,可能会尝试在主题替代名称中查找它,而当由于没有 subjectAltName 而失败时,您会收到一条错误消息。
无论如何,如果您将其用于多个站点,则需要在 subjectAltName 中包含主机名。我找到了一个网站,其中记录了如何正确创建自签名证书。
http://library.linode.com/ssl-guides/subject-alt-name-ssl
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
10386 次 |
| 最近记录: |