为什么我的证书链不包含 CA 根证书?

时间:2021-06-30 08:27:25

标签: ssl https openssl certificate

我在centos7主机(azcn-gs1-nginx2)上模拟了一个CA,并使用CA为服务器(azcn-gs1-nginx1)签署了一个证书。

以下是我所做的:

  1. 在 CA azcn-gs1-nginx1 上,生成密钥
cd /etc/pki/CA/private/
openssl  genrsa -aes128 -out  testCA.key 2048
  1. 生成 CA 证书
openssl req -new -x509 -days 1825 -key /etc/pki/CA/private/testCA.key -out  /etc/pki/CA/certs/testCA.crt
  1. 在服务器 azcn-gs1-nginx2 上,生成私钥和证书签名请求。
openssl  genrsa  -out  /etc/pki/tls/private/newServer.key 1024
openssl  req -new  -key  /etc/pki/tls/private/newServer.key  -out  /etc/pki/tls/newServer.csr
  1. 将 newServer.csr 复制到 CA 主机以进行签名。
scp /etc/pki/tls/newServer.csr   root@azcn-gs1-nginx2:~/newServer.csr
  1. 在 CA 主机上,对 newServer.csr 进行签名,然后将 newServer.crt 复制回 到服务器 azcn-gs1-nginx2。
openssl x509 -req  -in ./newServer.csr   -CA /etc/pki/CA/certs/testCA.crt  -CAkey /etc/pki/CA/private/testCA.key  -CAcreateserial  -out newServer.crt  -days 1461
scp newServer.crt root@azcn-gs1-nginx2:/etc/pki/tls/certs/newServer.crt
  1. 服务器 azcn-gs1-nginx2 是 Web 服务的反向代理。我在 Nginx 中为 https 配置了 newServer.key 和 newServer.crt。
        ssl_certificate         /etc/pki/tls/certs/newServer_1.crt;
        ssl_certificate_key     /etc/pki/tls/private/newServer.key;
  1. 我在另一台 Ubuntu 主机上。我将 CA 的证书 testCA.crt 导入到 Ubuntu 信任库中,如下所示:
cp testCA.crt /usr/local/share/ca-certificates/
update-ca-certificates
  1. Ubuntu 的内置浏览器是 firefox。我也导入 testCA.crt 进入火狐的信任库。请参阅附图。

enter image description here

我打开 Firefox 浏览器并通过 https 访问 Web 服务器。预期结果是可以直接打开网页,没有安全警告。

不幸的是,它给出了“您的连接不安全......”的警告。

enter image description here

而且,看起来证书只包含证书本身。它不包含 CA 的证书。

enter image description here

为什么会这样?如何在 Chain 中获得带有 CA 证书的签名证书? 感谢和问候, 杰

1 个答案:

答案 0 :(得分:0)

感谢您的评论。 没错。

其实很简单。 CA 和服务器的 2 个 .crt 文件可以合并为一个 .crt。那么证书链就是一个整体。

对了,图2和图3是其他问题。

谢谢, 杰

相关问题