ERR_SSL_PROTOCOL_ERROR

Автор BegU, 10 марта 2018, 22:55:50

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

BegU

Итак. Имеем 2 конфига на 2 домена. У обеих получен SSL-сертификат.

Конфиг первого домена:

Открыть содержимое (спойлер)

server {
        listen 80;
   listen [::]:80;
   server_name mysite1.ru www.mysite1.ru;
   return 301 https://$host$request_uri;
}

server {
        listen 443 http2 ssl;
        server_name www.mysite1.ru;
        ssl_certificate /etc/letsencrypt/live/mysite1.ru/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/mysite1.ru/privkey.pem;
        return 301 https://mysite1.ru$request_uri;
}

server {
    listen 443 http2 ssl;
    server_name mysite1.ru;
    ssl_certificate /etc/letsencrypt/live/mysite1.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mysite1.ru/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 77.88.8.8 valid=300s;
    resolver_timeout 5s;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;

    ssl_dhparam /etc/ssl/certs/dhparam.pem;
   
    location ~ /.well-known {
        allow all;
        }

    root /home/user/web/mysite1.ru/public_html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$uri&$args;
        index index.php index.html;
        }

    location /internal_data/ {
        internal;
        }
   
    location /library/ {
        internal;
       }

    location ~ /\. {
        deny all;
        }   
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;     
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;      
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 16k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        fastcgi_read_timeout 600;
        include fastcgi_params;
        fastcgi_cache_valid 200 60m;
   }
error_page 404 /404error.html;
        location = /404error.html {
                root /usr/share/nginx/html;
                internal;
        }      
      error_page 403 /403error.html;
        location = /403error.html {
                root /usr/share/nginx/html;
                internal;
        }            
}

[свернуть]

Все работает. И редирект с http на https, и редирект с www на без www.

Конфиг второго домена:

Открыть содержимое (спойлер)

server {
        listen 80;
   listen [::]:80;
   server_name mysite2.ru www.mysite2.ru;
   return 301 https://$host$request_uri;
}

server {
        listen 443 http2 ssl;
        server_name www.mysite2.ru;
        ssl_certificate /etc/letsencrypt/live/mysite2.ru/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/mysite2.ru/privkey.pem;
        return 301 https://mysite2.ru$request_uri;
}

server {
    listen 443 http2 ssl;
    server_name mysite2.ru;
    ssl_certificate /etc/letsencrypt/live/mysite2.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mysite2.ru/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 77.88.8.8 valid=300s;
    resolver_timeout 5s;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;

    ssl_dhparam /etc/ssl/certs/dhparam.pem;
   
    location ~ /.well-known {
        allow all;
        }

    root /home/user/web/mysite2.ru/public_html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$uri&$args;
        index index.php index.html;
        }

    location /internal_data/ {
        internal;
        }
   
    location /library/ {
        internal;
       }

    location ~ /\. {
        deny all;
        }   
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;     
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;      
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 16k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        fastcgi_read_timeout 600;
        include fastcgi_params;
        fastcgi_cache_valid 200 60m;
   }
error_page 404 /404error.html;
        location = /404error.html {
                root /usr/share/nginx/html;
                internal;
        }      
      error_page 403 /403error.html;
        location = /403error.html {
                root /usr/share/nginx/html;
                internal;
        }            
}
[свернуть]

Получаю ошибку: ERR_SSL_PROTOCOL_ERROR

Замечу, что оба домена крутятся на одном IP.

Подскажите, в какую сторону копать.

endru

в сторону браузера. смотри какой сертификат выдает для этого сайта

BegU

#2
Браузер явно не причем, т.к. у пользователей та же ошибка.

Cообщение объединено 11 марта 2018, 23:08:52

Как я заметил, у домена были проблемы с dns. Может причина ошибки заключаться в этом?

endru

Каким образом ты собираешься диагностировать проблему, если ты делаешь только догадки но не проверяешь на практике?

BegU

Как провести диагностику? На что конкретно обратить внимание?

endru

ну да тяжело посмотреть 1 ответ видимо...

BegU

#6
Видать так же тяжело, как дать нормальный ответ на простой, казалось бы, вопрос?

Cообщение объединено 12 марта 2018, 04:32:17

Надеюсь, это то, что нужно. На одном скрине блока

Открыть содержимое (спойлер)

server {
    listen 443 http2 ssl;
    server_name www.mysite1.ru;
    ssl_certificate /etc/letsencrypt/live/mysite1.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mysite1.ru/privkey.pem;
   return 301 https://mysite1.ru$request_uri;
   }
[свернуть]

нет, на втором (с ошибкой), когда он добавлен

Cообщение объединено 12 марта 2018, 22:58:36

Я заметил еще одну не приятную вещь. Если я перевожу второй домен, тот, с которым проблемы, на обычный конфиг, без SSL, тот, первый сайт, начинает выдавать ту же ошибку. Т.е., похоже, проблема более глобального характера.

endru

Скрины показывают только общую информацию, но никак не показывают сам сертификат.
Нужно нажать на "замок" во втором скрине и посмотреть сам сертификат. Там будет понятно, какой сертификат выдал сайт.
либо скинь в лс проблемный домен, если светить не хочешь на публику.

BegU

Я из-за своей дури, да по недосыпу, убил NGINX, сейчас все перенастраиваю. Если опять будут проблемы, то воспользуюсь предложением и напишу в ЛС. Кстати, замок был не активен. Хоть жми, хоть не жми.

BegU

#9
Решил проблему. Немного переписал конфиг. Вот, может кому пригодится.

Открыть содержимое (спойлер)

server {
     listen  80;
     server_name  www.mysite1.ru;
     rewrite ^ https://mysite1.ru$request_uri? permanent;
}

server {
    listen 443 ssl http2;
    server_name mysite1.ru;
    ssl_certificate /etc/letsencrypt/live/mysite1.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mysite1.ru/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_ecdh_curve secp384r1;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 77.88.8.8 valid=300s;
    resolver_timeout 5s;
    add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
      
    root /home/username/web/mysite1.ru/public_html;
    index index.php index.html index.htm;
   
location ~ /.well-known {
    allow all;
    }
location / {
    try_files $uri $uri/ /index.php?$uri&$args;
    index index.php index.html;
    }
location /internal_data/ {
    internal;
    }
location /library/ {
    internal;
    }
location ~ /\. {
    deny all;
    } 
location ~ \.php$ {
    try_files  $uri =404;
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;     
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;   
    fastcgi_buffer_size 128k;
    fastcgi_buffers 256 16k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_read_timeout 600;
    include fastcgi_params;
    }

location ~ /\. {
    deny all;
    }
}

server {
    listen  443 ssl http2;
    server_name  www.mysite1.ru;
    ssl_certificate /etc/letsencrypt/live/mysite1.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mysite1.ru/privkey.pem;
    rewrite ^ https://mysite1.ru$request_uri? permanent;
}
[свернуть]

С таким получил A+ на ssllabs.

endru, благодарю за помощь - подтолкнул в верном направлении.

Cообщение объединено 16 марта 2018, 04:13:08

Вообще, как я понимаю, проблема была в порядке подключения секций server.

endru

Цитата: BegU от 16 марта 2018, 04:02:50
Вообще, как я понимаю, проблема была в порядке подключения секций server.
Порядок не влияет.

BegU

Цитата: endru от 16 марта 2018, 04:26:53Порядок не влияет.
Дело в том, что ssl_ciphers я заменил и не работало. Вся остальная разница - добавление

location ~ /\. {
    deny all;
    }

и в реврайтах.