我从authentication服务处收到两个文件: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我的nginxconfiguration:
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; } }
按照ceejayoz。 在大多数情况下,这个过程如下所示
您生成:
cert.key cert.csr (using cert.key)
您将cert.csr发送到authentication服务(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-----
CSR cert.csr应该如下所示:
-----BEGIN CERTIFICATE REQUEST----- MIIEqjCCApICAQAwZTEeMBwGA1UEAxMVZGV2Y2lyY3MuM2NiZXRhLmNvLnVrMQ8w ... MctmU41Owfq+sIOGZ7G4zZqezUYownWt13hbprLk4DtWWEENRmvNinl0uCjAUA== -----END CERTIFICATE REQUEST-----
有些CA会为您提供密钥和CSR(startssl可以做到这一点),但是无论使用哪种方式来操作您的nginx站点,只需要cert.pem和key.pem文件。 你能从证书来源获得这些吗?
当你得到他们,你应该能够做到:
openssl rsa -in key.pem -modulus openssl rsa -in cert.pem -modulus
这将打印出证书和密钥模数。 他们必须匹配。
您可以转储请求:
openssl req -in cert.csr
希望有所帮助。
CSR是一个证书请求 ,而不是证书。 在大多数情况下,这是你产生的东西,而不是其他人。
SSL提供程序使用它来创build他们提供的证书(通常为.crt文件)。
顺便说一下,如果您生成私钥(因为它应该是私有的 ),安全性会更好。 按照@戴维的指示build立一个和必要的企业社会责任。