我正在尝试使用经过认证的 SSL 密钥在我的 nginx 反向代理上安装 SSL,但是当我尝试重新启动服务器时收到此消息:
Restarting nginx: [emerg]: SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/cert.key") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
configuration file /etc/nginx/nginx.conf test failed
每个文件都是 root:具有 600 个权限的 root,我已经测试了证书并且它们通过此网站进行了验证:http://ssltools.com/cert_key_match
我的键中没有尾随的奇怪字符,每行有 64 个字符
这是我的配置文件
server {
listen 443;
server_name my.domain.com;
ssl on;
ssl_certificate conf.d/cert.pem;
ssl_certificate_key conf.d/cert.key;
location / {
proxy_pass http://upstream1;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
有什么想法吗?谢谢
答案1
查看这里
我希望您复制粘贴了下列内容:
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
答案2
可能对其他人有用的不同解决方案:
使用.pem
文件ssl_certificate
ssl_certificate_key
那是:
...
ssl on;
ssl_certificate conf.d/cert.pem;
ssl_certificate_key conf.d/cert.pem;
...
答案3
仅供参考,确保您的 BEGIN 块是完全相同的逐个字符地转换为预期的块。我的开始是4 个破折号,而不是 5 个. ----
vs.-----
当您犯此错误时,验证工具错误消息不是很具体。
答案4
我收到此错误是因为我不小心在指令中使用了.cer
文件而不是文件。.key
ssl_certificate_key