中间CA(go daddy)签署的有效证书不适用于少数客户端(docker alpine)

问题描述 投票:0回答:1

我已经从Azure购买了域和证书。该证书由Go Daddy作为天蓝色的合作伙伴提供,并与Go daddy的中间证书签名,因此,直到根CA之前,它始终需要链接证书。

我们的网站被用作客户的REST界面,因此客户使用Java SDK或普通脚本。在我们的案例中,正是使用microsoft中的zulu jdk图像(11u5-zulu-alpine),甚至我尝试使用ubuntu 16.04 LTS并得到相同的错误。

如果我们尝试使用适当的证书甚至卷曲到我们的站点,则会收到如下错误,并且由于缺少中间CA而引起!

curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

使用Java SDK,我们得到的是javax.net.ssl.SSLHandshakeException

我有3个问题。

  1. 我们需要将中间证书和根证书与我们的域证书捆绑在一起并进行部署。(证书为pfx格式)
  2. 告诉我们的客户安装捆绑证书(根证书和中间证书)以使其正常工作是一种好习惯。
  3. GoDaddy是否需要在Ubuntu,alpine的打包存储库中更新捆绑包证书,或者我的理解是错误的

最后,我对证书在客户端和服务器上的工作方式有一个很清楚的了解,但是在图中显示了中间CA的情况下,我无法确切了解中间CA的放置位置。我在SO上读了几篇文章,但仍不清楚。请允许我,如果有人可以向我解释该方法的总体工作原理以及什么是最佳实践。

ssl ssl-certificate keystore keytool ca
1个回答
0
投票
  1. 我们需要将中间证书和根证书与我们的域证书捆绑在一起并进行部署。(证书为pfx格式)

您绝对应该将服务器配置为发送所有必需的中间证书; TLS标准要求这样做。 (尽管您不这样做,但客户端具有option尝试通过其他方式(例如缓存或存储库或AIA)来获取它们,而有时则可以这样做。)服务器是否发送根目录是可选的;这些标准实际上相反地指出了这一点,即说服务器可以省略根,而全大写的“ MAY”将调用RFC 2119中定义的含义。对于RFC5246 7.4.2中的TLS1.2:

      This is a sequence (chain) of certificates.  The sender's
      certificate MUST come first in the list.  Each following
      certificate MUST directly certify the one preceding it.  Because
      certificate validation requires that root keys be distributed
      independently, the self-signed certificate that specifies the root
      certificate authority MAY be omitted from the chain, under the
      assumption that the remote end must already possess it in order to
      validate it in any case.

如何执行此操作取决于您所使用的Web服务器软件,而您并未确定。尽管实际上您指定了Java版本,但我可以推测它might是Tomcat,或者是基于Tomcat的诸如Jboss / Wildfly之类的东西。即使这样,Tomcat的SSL / TLS配置也会根据版本和所使用的连接器“堆栈”的类型(纯Java JSSE或Tomcat Native,又称APR Apache Portable Runtime,实际上是OpenSSL)而有很大不同。但是,“ pfx”(PKCS12)文件肯定可以同时包含私钥和匹配的(EE)证书加上所需的链证书,并且是一次处理整个kaboodle的便捷方法。

对于直接从GoDaddy获得的证书,他们提供了从https://www.godaddy.com/help/install-ssl-certificates-16623链接到的许多常见服务器的说明。我不知道对于Azure,他们是否使用任何其他链式更改了这些说明。

如果您的服务器可公开访问,则在端口443处,https://www.ssllabs.com/ssltest将检查它是否正确处理了链证书以及许多其他事情。还有其他工具,但我对它们并不熟悉。对于非公共服务器,我通常只是手动查看。

  1. 告诉我们的客户安装捆绑证书(根证书和中间证书)以使其正常工作是一种好习惯。

客户端不应安装中间证书,因为服务器应如上所述发送中间证书。 GoDaddy根已在大多数官方信任库中接受了几年,因此使用默认设置的most客户端不需要添加它们。但是,有些可能;特别是Ubuntu 16.04可能已经足够旧,因此没有预装GoDaddy。希望使用自定义信任库和/或密码的任何客户端必须确保将其设置为包括/允许您证书的信任链。

  1. GoDaddy是否需要在Ubuntu,alpine的打包存储库中更新捆绑包证书,或者我的理解是错误的

GoDaddy has如上所述,它的根源已提供给(主要是AFAIK)主要的信任库程序。 IINM Ubuntu使用Mozilla / NSS列表,该列表今天肯定包括GoDaddy,但是如上所述,我不确定16.04。我不知道高山。 CA不要求信任库程序包括中间件(尽管程序或用户可能能够将选定的中间件添加为受信任的中间件,具体取决于所使用的软件)。

© www.soinside.com 2019 - 2024. All rights reserved.