【发布时间】:2021-09-12 09:29:17
【问题描述】:
我在centos7主机(azcn-gs1-nginx2)上模拟了一个CA,并使用CA为服务器(azcn-gs1-nginx1)签署证书。
以下是我的工作:
- 在 CA azcn-gs1-nginx1 上,生成密钥
cd /etc/pki/CA/private/
openssl genrsa -aes128 -out testCA.key 2048
- 生成 CA 证书
openssl req -new -x509 -days 1825 -key /etc/pki/CA/private/testCA.key -out /etc/pki/CA/certs/testCA.crt
- 在服务器 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
- 将 newServer.csr 复制到 CA 主机进行签名。
scp /etc/pki/tls/newServer.csr root@azcn-gs1-nginx2:~/newServer.csr
- 在 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
- 服务器 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;
- 我在另一个 Ubuntu 主机上。我将 CA 的证书 testCA.crt 导入 Ubuntu 信任库,如下所示:
cp testCA.crt /usr/local/share/ca-certificates/
update-ca-certificates
- Ubuntu 的内置浏览器是 firefox。我也导入 testCA.crt 进入 Firefox 的信任库。请看附图。
我打开firefox浏览器并通过https访问网络服务器。预期结果是可以直接打开网页而没有安全警告。
不幸的是,它会发出“您的连接不安全.....”的警告。
而且,证书似乎只包含证书本身。它不包含 CA 的证书。
为什么会这样?如何在 Chain 中获得带有 CA 证书的签名证书? 感谢和问候, 杰
【问题讨论】:
-
Firefox 不使用此信任库,但自带。改为使用 Firefox 设置将受信任的 CA 添加到 Firefox。
-
@Steffen:他们做到了,请参见图 1。 OP:您的图像 2 在 Ubuntu 上并且没有显示 root 丢失,它显示了一个不同的错误:证书中的域名(你放作为 CSR 中的通用名称)与您尝试连接的域名(在 URL 中)不同。您需要使 CSR 和证书与 URL 相同,反之亦然,或者使证书成为通配符(仅一级)。您的图像 3 显示 Windows 上的某些其他浏览器或软件上缺少根,但 Ubuntu 上的 Firefox 没有。
-
@dave_thompson_085:感谢您的敏锐目光。
-
@dave_thompson_085,是的,你是对的。图片是其他问题。证书链非常简单,只需将 2 个 .crt 文件连接成一个。谢谢。
标签: ssl https openssl certificate