Я создал ssl-сертификаты для своего сайта с sslforfree.com
Я пытаюсь включить SSL на моем сервере NGINX, как показано ниже, к сожалению, я получаю сообщение об ошибке, которое вы можете увидеть внизу:
/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
В чем может быть проблема ??
Ошибка в вашей конфигурации в том, что у вас есть только один параграф сервера. Сервер сообщает все, что нужно знать одному соединению. Если вам нужен SSL, вам нужно выделить его в отдельный параграф о сервере. Поправьте меня, если я ошибаюсь, но, насколько я помню (и использую NginX уже 3 года), один параграф сервера не может прослушивать два разных порта.
Итак, ваша правильная конфигурация будет выглядеть так, если вы также хотите перенаправить весь HTTP на HTTPS:
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..............
}
Также несколько советов на будущее:
Поместите ваши файлы crt и ключей в / etc / nginx / ssl / com.myserver.crt
и /etc/nginx/ssl/com.myserver.key
(просто потому, что он лучше организован таким образом)
Повысьте свою безопасность с помощью следующего кода после ssl_ccertificate и перед корнем:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers на;
ssl_ciphers "EECDH + AESGCM: EDH + AESGCM: ECDDES-25: ECDDES-AESGCM: ECDDHE-25 : DHE-RSA-AES128-GCM-SHA256: AES256 + EDH: ECDHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES256-GCM-SHA384: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES6 : 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:! ANULL :! eNULL:! EXPORT:! DES:! MD5:! PSK:! RC4 ";
add_header Strict-Transport-Security" max-age = 63072000; includeSubdomains; preload ";
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
Создайте файл dhparam.pem с помощью следующей команды:
openssl dhparam -dsaparam -out / etc / nginx / ssl / dhparam. pem 4096
У меня было 2 файла CRT, загруженных с sslforfree.com
В конфигурации nginx, когда я изменил сертификат с ca_bundle.crt на certificate.crt, проблема решена.