【问题标题】:java web start codebase certificate chainjava web start 代码库证书链
【发布时间】:2015-10-29 08:39:53
【问题描述】:

我正在使用 Java Web Start (JWS) 来部署和运行我的 JavaFX 应用程序。我的 jnlp 文件的jnlp 元素定义如下:

<jnlp spec="1.0+" xmlns:jfx="http://javafx.com" codebase="http://www.example.com/software" href="MyJnlp.jnlp">

我的应用程序使用上述配置成功启动。我现在正在尝试调整 jnlp 文件,以便通过 SSL 下载 jar。我为我的域购买并安装了 SSL 证书。通过将浏览器指向https://www.example.com/software/MyJar.jar 并验证 jar 是否已下载,我已确认证书已成功安装。

我更新了我的 jnlp 文件的 jnlpelement 如下:

<jnlp spec="1.0+" xmlns:jfx="http://javafx.com" codebase="https://www.example.com/software" href="MyJnlp.jnlp">

当我通过双击 jnlp 文件启动应用程序时,我收到来自 Java 的警告,指出“与此网站的连接不受信任”,然后单击“更多信息”,我看到一条消息,指出“颁发的证书颁发机构证书不受信任" (warnings pictured here)

我的 SSL 证书依赖于 SSL 证书链将其链接到根证书。我打开 Java 控制台并验证我的根证书存在于 Secure Site CA“证书类型”选项卡 (pictured here) 的 System 部分下。

作为测试,然后我尝试将我网站的 SSL 证书导入到Secure Site“证书类型”选项卡的User 部分。导入网站的 SSL 证书后,我不再收到警告。

根据这个测试,在我看来,Java 可能无法读取/无法读取将我的证书链接到根证书的证书链中的中间证书。

我希望我的用户能够通过 https 启动 JWS 应用程序,而无需导入我的站点证书或收到警告提示。有人可以帮忙吗?

【问题讨论】:

    标签: java https ssl-certificate java-web-start


    【解决方案1】:

    经过进一步调查,我最初对故障根源的假设似乎是不正确的。我使用openssl 查看托管我的Java Web Start 代码库的服务器提供的证书和证书链(我正在使用openshift)。 SSL 数据显示,虽然我的自定义域的 SSL 证书正在呈现,但证书链对应于 RedHat 的默认 SSL 配置(显然不会验证我的自定义域的证书)。

    My-MacBook-Pro:~ username$ openssl s_client -connect www.example.com:443
    CONNECTED(00000003)
    depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA
    verify error:num=20:unable to get local issuer certificate
    verify return:0
    ---
    Certificate chain
     0 s:/C=US/ST=North Carolina/L=Raleigh/O=Red Hat Inc./CN=*.rhcloud.com
       i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
     1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
       i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
    ---
    Server certificate
    -----BEGIN CERTIFICATE-----
    ***CERTIFICATE FOR MY CUSTOM DOMAIN***
    -----END CERTIFICATE-----
    

    由于服务器为 openshift 的默认 SSL 支持提供证书链,我决定将我的 jnlp 文件的 codebase 属性更改为指向 Redhat 提供的域,从而解决了“不受信任的连接”错误。

    我对这个结果很满意。但是,要使用我的自定义域,我认为正确的做法是跟进 Redhat 以确定为什么在使用我的自定义域名访问服务器时未显示包含我的证书链的 pem 文件。

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2014-03-24
      • 2012-09-30
      • 1970-01-01
      • 2015-02-07
      • 2015-07-09
      • 2012-04-22
      • 1970-01-01
      相关资源
      最近更新 更多