Как включить SSL на nginx?

Я создал 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

В чем может быть проблема ??

1
задан 6 October 2017 в 11:35
2 ответа

Ошибка в вашей конфигурации в том, что у вас есть только один параграф сервера. Сервер сообщает все, что нужно знать одному соединению. Если вам нужен 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

3
ответ дан 3 December 2019 в 17:34

У меня было 2 файла CRT, загруженных с sslforfree.com

В конфигурации nginx, когда я изменил сертификат с ca_bundle.crt на certificate.crt, проблема решена.

1
ответ дан 3 December 2019 в 17:34

Теги

Похожие вопросы