我已经从sslforfree.com为我的网站创build了SSL证书
我尝试在我的NGINX服务器上启用SSL,如下所示,不幸的是我收到一条错误消息,你可能会在底部看到:
/etc/nginx/sites-available/default server { listen 80; server_name myserver.com; listen 443; ssl on; ssl_certificate /home/tolga/SSLcerts/ca_bundle.crt; ssl_certificate_key /home/tolga/SSLcerts/private.key;
错误信息:
tail -f /var/log/nginx/error.log 2017/10/06 11:29:55 [emerg] 13813#13813: SSL_CTX_use_PrivateKey_file("/home/tolga/SSLcerts/private.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch
什么可能是问题?
你的configuration错误是你只有一个服务器段落。 服务器告诉一个连接需要知道的一切。 当你想要SSL时,你需要把它放在一个单独的服务器段落。 纠正我,如果我错了,但据我记得(并使用NginX 3年现在)单个服务器段落不能听两个不同的端口。
所以如果你也希望把所有的HTTPredirect到HTTPS,那么你的正确configuration看起来就像这样:
server { listen 80; server_name myserver.com; return 301 https://myserver.com$request_uri; } server { listen 443 ssl; server_name myserver.com.hu; ssl_certificate /home/tolga/SSLcerts/ca_bundle.crt; ssl_certificate_key /home/tolga/SSLcerts/private.key; root /var/www/html/com.myserver/public; error_log /var/log/nginx/com.myserver/error.log; access_log /var/log/nginx/com.myserver/access.log; index index.php; gzip on; gzip_vary on; gzip_min_length 10240; gzip_proxied expired no-cache no-store private auth; gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml; gzip_disable "MSIE [1-6]\."; location.............. location.............. location.............. location.............. }
还有一些对未来的build议:
把你的crt和密钥文件放到/etc/nginx/ssl/com.myserver.crt和/etc/nginx/ssl/com.myserver.key (简单地说就是这样更好地组织)
在ssl_ccertificate之后和root之前使用以下代码提高安全性:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers;
ECDH-AESA-AES128-GCM-SHA256:AES256 + EECDH:DHE-RSA-AES128-GCM-SHA256:AES256 + EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE- RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE- RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128- GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:A零位:ENULL:EXPORT:DES:MD5:PSK:!!!!!!!RC4" ;
add_header Strict-Transport-Security“max-age = 63072000; includeSubdomains; preload”;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
使用以下命令创build您的dhparam.pem文件:
openssl dhparam -dsaparam -out /etc/nginx/ssl/dhparam.pem 4096
我有2个CRT文件从sslforfree.com下载
在nginxconfiguration中,当我将证书从ca_bundle.crt更改为certificate.crt时,问题就解决了。