Nginx SSL 证书

Nginx SSL 证书

我从认证服务收到了两个文件:CSR.txt:看起来像这样:

        -----BEGIN CERTIFICATE REQUEST-----
Code
-----END CERTIFICATE REQUEST-----

和 Private_Key.txt 格式相同,我试图在 Nginx 上设置它们,但每次我重新启动 Nginx 时总是出现此错误

failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib)

我已将 CSR.txt 重命名为 domain.crt,将 private_key.txt 重命名为 domain_key.key,我的 nginx 配置:

server {
    listen 443;
    server_name domain.com;

    root html;
    index index.html index.htm;

    ssl on;
    ssl_certificate /etc/ssl/certs/domain.crt;
    ssl_certificate_key /usr/share/nginx/www/domain.com/domain_key.key;

    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;

    location / {
        try_files $uri $uri/ =404;
    }
}

答案1

根据 ceejayoz 的说法。在大多数情况下,该过程的工作原理如下:

您生成:

cert.key
cert.csr (using cert.key)

您将 cert.csr 发送给认证服务 (CA)。CA 会向您发送:

cert.pem

cert.pem是您签名的证书,看起来应类似于:

-----BEGIN CERTIFICATE REQUEST-----
MIICpjCCAY4CAQAwYTEaMBgGA1UEAxMRZG9jcy4zY2JldGEuY28udWsxDzANBgNV
...
efqf6gYqezWiXs1s5aNh363F1j+o7TWi0D5ayEBv/lihAmLs4dsaJzSvZiWVxnIr
5hUED99Ne1WUbg==
-----END CERTIFICATE REQUEST-----

密钥cert.key看起来应该是这样的:

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAqXpfLXr2oRPwP+Pt4Az+iHldiHrIDnVW/uWY3MPvAJN8BWLe
...
f2UKtbEUsSDQ2BWiQia/3VUzLOlDArYxqA7kZFKes2z9ji8vobPG27o=
-----END RSA PRIVATE KEY-----

CSRcert.csr看起来应该是这样的:

-----BEGIN CERTIFICATE REQUEST-----
MIIEqjCCApICAQAwZTEeMBwGA1UEAxMVZGV2Y2lyY3MuM2NiZXRhLmNvLnVrMQ8w
...
MctmU41Owfq+sIOGZ7G4zZqezUYownWt13hbprLk4DtWWEENRmvNinl0uCjAUA==
-----END CERTIFICATE REQUEST-----

一些 CA 会为您生成密钥和 CSR(startssl 可以做到这一点),但无论如何,要操作您的 nginx 站点,您只需要cert.pemkey.pem文件。您可以从证书源获取它们吗?

当你得到它们时你应该能够做到:

openssl rsa -in key.pem -modulus

openssl rsa -in cert.pem -modulus

这将打印出证书和密钥模数。它们必须匹配。

您可以使用以下方式转储请求:

openssl req -in cert.csr

希望有所帮助。

答案2

CSR 是要求表示证书,而不是证书。在大多数情况下,它是您生成的,而不是其他人生成的。

您的 SSL 提供商使用它来创建证书,然后将其提供给您(通常为 .crt 文件)。

顺便说一句,如果你生成私钥(因为它应该是私人的)。按照@davey 的说明构建一个并获取必要的 CSR。

相关内容