gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:56:55 44 4
gpt4 key购买 nike

我已经从 Azure 购买了域和证书。该证书由 Go Daddy 作为 azure 合作伙伴提供,并使用 Go daddy 的中间证书签名,因此它始终需要将证书链接到 Root CA。

我们的网站用作客户的 REST 界面,因此客户使用 Java SDK 或纯脚本。在我们的例子中,恰好是来自 microsoft 的 zulu jdk image(11u5-zulu-alpine)甚至我尝试使用 ubuntu 16.04 LTS 并得到同样的错误。

如果我们甚至尝试使用正确的证书 curl 到我们的站点,我们会收到如下错误,这是因为缺少中间 CA!

curl: (60) 服务器证书验证失败。 CA文件:/etc/ssl/certs/ca-certificates.crt CRL文件:无

使用 java SDK 我们得到 javax.net.ssl.SSLHandshakeException

我有 3 个问题。

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

最后,我对证书如何在客户端和服务器上工作有了一个清晰的认识,但是对于图片中的中间 CA,我无法准确理解应该将中间 CA 放在哪里。我读了一些关于 SO 的帖子,但它仍然不清楚。请耐心等待,如果有人可以向我解释这种方法的一般工作原理以及什么是好的做法。

最佳答案

  1. Do we need to bundle the intermediate and root certificate with our domain certificate and deploy it.( the certificate is in pfx format)

您一定要将服务器配置为发送所有必需的中间证书;这是 TLS 标准所要求的。 (尽管如果您不这样做,客户可以选择尝试通过其他方式获取它们,例如缓存或存储库或 AIA,而且有时他们会这样做。)是否服务器发送根是可选的;标准实际上是相反的,通过说服务器可以省略根,其中全大写的“可以”调用 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.

您如何执行此操作取决于您使用的网络服务器软件,您没有识别。尽管根据您指定的 Java 版本这一事实,我可以推测它可能 是 Tomcat,或者基于 Tomcat 的东西,例如 Jboss/Wildfly。即便如此,Tomcat 的 SSL/TLS 配置也会根据版本和您使用的连接器“堆栈”类型(纯 Java JSSE,或 Tomcat Native,又名 APR Apache Portable Runtime,实际上是 OpenSSL)而有很大差异。但是,“pfx”(PKCS12) 文件绝对可以同时包含私钥和匹配的 (EE) 证书加上它需要的链证书,这是处理整个过程的便捷方式立即卡布德。

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

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

  1. Is it a good practice to tell our clients to install the bundle certificates ( root and intermediate) in order to get this working.

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

  1. Does GoDaddy needs to update the bundle certificate in the packing repositories of Ubuntu ,alpine Or is my understanding wrong

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

关于ssl - 由中间 CA(go daddy)签署的有效证书不适用于少数客户(docker alpine),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59661600/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com