在 nginX 中托管 .p7b HTTPS 证书

在 nginX 中托管 .p7b HTTPS 证书

我们需要将 Web 服务从 HTTP 更改为 HTTPS,因此我们生成了 .csr 并提供给我们的客户,然后取回 .p7b 和 .cer 文件以便在 Linux 服务器上托管的 nginX 中使用它们。

我是 nginX 的新手,根据我的理解,.p7b 和 .cer 都是证书文件,但我不知道应该使用哪一个SSL 证书参数还是我需要连接两个文件并将结果文件传递给SSL 证书达到目的了吗?

server {

listen   443;
ssl    on;
ssl_certificate    /etc/ssl/your_domain_name.pem; (or bundle.crt)
ssl_certificate_key    /etc/ssl/your_domain_name.key;

server_name your.domain.com;
access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;
location / {
root   /home/www/public_html/your.domain.com/public/;
index  index.html;
}

}

我沿着此链接跟踪了不同的链接,但找不到正确的答案。

谁能详细告诉我该如何使用它们?

PS:将问题从 StackOverFlow 转移到 SuperUser。

答案1

它们都包含相同的数据(大部分),但格式不同。Nginx 需要“纯” .crt 格式,但并非所有 CA 都包含必要的数据,因此您可能需要从 .p7b 进行转换。(另请参阅https://superuser.com/a/123327/1686

ssl_certificate文件有两个要求:

  • 对于 nginx(和许多其他服务),它必须是带有标题的文本,又称“PEM 编码”格式BEGIN CERTIFICATE

    有时.cer文件是二进制格式。使用文本编辑器进行检查;您可以使用openssl x509 -inform DER < thing.cer > thing.crt它将文件转换为文本格式。

  • 证书文件还必须包含中级证书 – 再次用文本编辑器打开(或使用certtool -i)。

    一些 CA 将它们作为单独的文件包含,在这种情况下,需要将它们连接在一起(首先是您的证书,然后是中间证书)。

由于你在 .p7b 文件中也获得了相同的证书,因此最万无一失的做法可能是进行转换到 PEM 证书文件:

openssl pkcs7 [-inform DER] -print_certs < thing.p7b > fullchain.crt

生成的.crt 文件应该包含所有必要的内容。

相关内容