我有两个 SSL 证书:
- 其中一个
snipsalonsoftware.com
目前已到位并正常运行。 - 已
app.snipsalonsoftware.com
购买但尚未安装。
我现在想做的只是验证snipsalonsoftware.com
证书的有效性,这样当我尝试验证时app.snipsalonsoftware.com
,我知道我得到了一个有意义的答案。
这是由 DreamHost 提供的 Comodo 专业签名证书,而非自签名证书。我该如何使用openssl
或其他方法验证信任链?
以下是我尝试后得到的结果:
$ openssl verify domain.pem
domain.pem: /OU=Domain Control Validated/OU=Provided by New Dream Network, LLC/OU=DreamHost Basic SSL/CN=snipsalonsoftware.com
error 20 at 0 depth lookup:unable to get local issuer certificate
但对我来说,这就像,当然你无法获得本地证书——没有证书。我不明白我应该如何验证专业签名的证书。
答案1
一般来说,这意味着 OpenSSL 的默认 CA 路径不包含签署您正在检查的证书(通常是中间证书)。
您需要获取中间件的副本(大多数 CA 都会提供,或者您可以从信任有效的 SSL 连接中获取它),然后在命令中使用 指向openssl
它-CAfile intermediate.pem
。
答案2
您应该能够从提供商处下载构成信任链从您签署的证书到签署的证书颁发机构。
然后使用openssl verify
这些证书。检查命令的-CAfile
和选项以了解如何操作。-CApath
verify(1)
答案3
您还可以使用以下在线工具:SSL 检查器它以图形方式显示您的服务器呈现的信任链,并帮助您找出链中缺少哪些证书
答案4
你必须猫所有证书到最终的 CA_Chain.crt:
:~$ cat RootCA.crt IntermediateCert1 IntermediateCert2 > CA_Chain.crt
:~$ openssl verify -CAfile CA_Chain.crt website.crt
(website.crt sign by IntermediateCert2)