【问题标题】:Spark app not sending intermediate / chain certificatesSpark 应用程序不发送中间/链证书
【发布时间】:2017-07-04 17:43:55
【问题描述】:

我有一个使用 Spark Java 框架编写的应用程序,启用了 TLS。

见:

Service https = ignite()
  .port(8443)
  .secure(keystorePath, keystorePass, truststorePath, truststorePass);

这是通过 iptables 规则在端口 443 上提供的,该规则将传入的 443 重定向到 8443。

我遇到的问题是,当使用 Qualys ssl 实验室测试 (https://www.ssllabs.com/ssltest/) 时,服务器未提供已在我的信任库中配置的中间证书。

当我使用 openssl s_client 时会出现类似的结果:

Verify return code: 21 (unable to verify the first certificate)

随着

depth=0 /OU=Domain Control Validated/OU=PositiveSSL/CN=my.app.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/OU=PositiveSSL/CN=my.app.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 /OU=Domain Control Validated/OU=PositiveSSL/CN=my.app.com
verify error:num=21:unable to verify the first certificate
verify return:1

据我所知,服务器(我想是 spark java 应用程序或嵌入式 Jetty)似乎没有提供用于链验证的中间证书。

浏览器认为该站点是安全的,但我认为这是因为浏览器会自行下载必要的中间证书。

这是一个问题的原因是我正在尝试使用 Stripe 支付 webhook,并且它们在 TLS 证书链的有效性方面有严格的规定。

我不知道从哪里开始弄清楚为什么我的应用没有提供这些中间证书。有人可以提供一些建议吗?

【问题讨论】:

    标签: java ssl spark-java


    【解决方案1】:

    我或多或少有同样的问题。我按照 Java Spark 网站上的说明进行操作(它们很少),但我的努力只得到了一个服务器错误。

    我在我的密钥库文件中导入了第三方证书。我在 java keytool 的外部生成了 CSR。

    我在“mydomain.com”所在的服务器上移动了keystone文件。

    我有相同的基本代码来执行“secureHello”测试(根据他们的文档),将 keystore.jks 文件的路径作为第一个参数传递,密码作为第二个参数。

    结果:服务器错误。

    不确定接下来我可以尝试什么。显然,我错过了一些东西。

    到目前为止(今天)我的头在桌子上敲了 4 个小时......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 2021-11-20
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2012-03-29
      相关资源
      最近更新 更多