我们需要将 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 文件应该包含所有必要的内容。