自签名证书、Java、Hudson和JIRA

自签名证书、Java、Hudson和JIRA,java,ssl-certificate,jira,hudson-plugins,Java,Ssl Certificate,Jira,Hudson Plugins,我正在尝试设置Hudson JIRA插件。我们的JIRA服务器使用自签名SSL证书进行保护。我已经使用keytool命令插入了web浏览器存储的证书,并让Hudson找到了它。但现在它抱怨: java.security.cert.CertificateException: No subject alternative names present 证书的通用名称为“未知”,我在证书中没有看到任何主题替代名称 $ openssl x509 -in Unknown -text -noout Cert

我正在尝试设置Hudson JIRA插件。我们的JIRA服务器使用自签名SSL证书进行保护。我已经使用keytool命令插入了web浏览器存储的证书,并让Hudson找到了它。但现在它抱怨:

java.security.cert.CertificateException: No subject alternative names present
证书的通用名称为“未知”,我在证书中没有看到任何主题替代名称

$ 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]
(括号中编辑并注明了识别信息。)


有没有办法将使用者的备用名称附加到此证书?还是有别的办法?还是我被迫破解Hudson Jira插件?

如果我没有弄错的话,SSL要求证书的通用名称包含您试图连接的主机名,这样客户端就可以验证证书不仅在总体上是可信的,而且在位置上也是可信的

我假设您正在使用OpenSSL生成证书。您没有设置
cn=[yourserver]
有什么原因吗

这可能是因为当插件在公共名称中找不到正确的主机名时,插件会尝试在subject alt name中查找它,而当由于没有subjectAltName而失败时,您会收到错误消息

无论如何,如果要对多个站点使用此选项,则需要在subjectAltName中包含主机名。我发现了一个网站,它记录了如何正确创建自签名证书


希望这能有所帮助。

用于访问Jira服务器(例如,Jira.acme.comin)的主机名必须与主题名称的
CN
字段之一匹配,否则,必须与证书的
主题备选名称
字段之一匹配

详情见:

在某些情况下,指定URI 作为IP地址而不是 主机名。在本例中,iPAddress subjectAltName必须出现在 证书,并且必须与 URI中的IP

在您的情况下,Java会抱怨,因为
CN
(“未知”)和
主题替代名称(因为您没有)都与Jira服务器的主机名不匹配

因此,使用适当的
CN
生成证书,例如使用
keytool

创建密钥对和自签名证书的步骤 这样你就可以从这些机器上访问。但很明显,这与其说是一个真正的解决方案,不如说是一个肮脏的黑客行为,而且无法扩展

联系管理员以获得真正的“好”证书仍然是真正好的解决方案

资源
  • (使用openssl或keytool)
工具书类

    • 有几种可能的解决方案,每种方案都有自己的痛苦

      • 为JIRA生成新证书,这一次在为证书生成密钥对时指定CN

        我不明白为什么不能生成新证书;我很确定JIRA服务器的其他客户端也遇到了一些问题,特别是针对所描述的证书的来自浏览器的警告。因此,必须重新测试所有客户机(和客户机应用程序),但如果自签名证书是由所有客户机都信任的本地CA颁发的,则这并不困难

      • 编辑DNS条目,以确保从Hudson服务器查找到“未知”的内容指向安装JIRA的服务器[我确实提醒过某人与某些解决方案相关的问题:-])。这确保了证书中存储的CN值与主机名匹配-您需要将Hudson配置为使用类似
        的URLhttp://Unknown/....
        。哦,只有在你非常紧张的时候才使用这个;你不想解释你为什么这么做

      我只是一个基本用户。证书和JIRA设置由系统管理员完成。我不知道为什么他们没有在证书中设置名称。浏览器警告是提示用户接受自签名证书,并且一旦永久存储,不会再次出现。我更倾向于第二种选择。我的机器上没有root,但我的同事有。我可以在本地更改此项,然后使用此项向上级演示Hudson,如果我得到了微弱的批准,请系统管理员更改证书。(我意识到这真的很笨拙,并希望找到一个只会影响Hudson本身而不是整个系统的解决方案。)首先,我无权更改从服务器上看到的证书。其次,JIRA服务器没有主机名(至少我从未使用过主机名),只有一个IP。(这可能与你所说的无关,只是以防万一。)谢谢你提供的所有链接。如果证书中没有主机名或IP地址,它就相当于没有名字的有效护照。证书是有效的,但无法将其与部署在其上的主机绑定。@AFoglia好吧,你为什么不在问题中提及这一点无论如何,您应该真正设置一个有效的证书(使用真实的主机名-机器确实有一个主机名-或者SubjectAltNames扩展名中的IP地址)。如果这不在您的控制之下,那么您的管理员必须这样做。联系他们。下面的回复很好,但我想澄清一下:我没有权限修改JIRA服务器或它使用的证书。我显然有权访问存储在Java密钥库中的证书。我希望修改我下载的证书副本,在Java查找它们的地方插入适当的subject备用名称。 $ 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
      123.123.123.123    Unknown