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

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

我们的网站被用作客户的REST界面,因此客户使用Java SDK或纯脚本。在我们的案例中,正是使用microsoft中的zulu jdk image(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上读了几篇文章,但仍然不清楚。请允许我,如果有人可以向我解释该方法的总体工作原理以及什么是好的做法。

xty2004 回答:由中级CA(go daddy)签署的有效证书不适用于少数客户端(docker alpine)

  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版本,但我可以推测它可能是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根已被大多数官方信任库接受了几年,因此使用默认设置的大多数客户无需添加它们。但是,有些可能;特别是Ubuntu 16.04可能已经足够旧,因此没有预装GoDaddy。希望使用自定义信任库和/或密码的任何客户端都必须确保将其设置为包括/允许您证书的信任链。

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

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

本文链接:https://www.f2er.com/2798670.html

大家都在问