Автор Тема: NGINX + SSL  (Прочитано 6369 раз)

Оффлайн zah

  • Давно тут
  • **
  • Сообщений: 140
  • ^_^
NGINX + SSL
« : 18.07.2018 14:02:11 »
   Всем привет!

Настраиваю reverse proxy в nginx. Всё отрабатывает, но возникла проблема с сертификатом который получен из удостоверяющего центра. Сертификаты root и wildcard лежат в той же папке.

При проверке сертификата выдаёт следующее:

# openssl verify domen.crt
error 20 at 0 depth lookup:unable to get local issuer certificate

Подскажите куда копать?

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: NGINX + SSL
« Ответ #1 : 18.07.2018 15:13:32 »
от какого УЦ? и у вас RSA сертификаты или ГОСТ?

Оффлайн zah

  • Давно тут
  • **
  • Сообщений: 140
  • ^_^
Re: NGINX + SSL
« Ответ #2 : 18.07.2018 15:18:15 »
от какого УЦ? и у вас RSA сертификаты или ГОСТ?

RSA сертификаты

Authority Information Access:
                CA Issuers - URI:http://crt.usertrust.com/RU-CENTERHighAssuranceServicesCA2.crt
                OCSP - URI:http://ocsp.usertrust.com

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: NGINX + SSL
« Ответ #3 : 18.07.2018 15:26:50 »
ну так покажите раздел конфига nginx с этим сайтом.
Я обычно полные пути до файлов с сертификатами ( /etc/ssl/nginx/... ) прописываю и у меня работает.

Оффлайн zah

  • Давно тут
  • **
  • Сообщений: 140
  • ^_^
Re: NGINX + SSL
« Ответ #4 : 18.07.2018 15:37:35 »
ну так покажите раздел конфига nginx с этим сайтом.
Я обычно полные пути до файлов с сертификатами ( /etc/ssl/nginx/... ) прописываю и у меня работает.

server {
       listen 80;
       server_name subdomian.domain.ru;
       access_log /var/log/nginx/access.log;
       error_log /var/log/nginx/error.log;
       return 301 https://$server_name$request_uri;
       }

server {
        listen 443 ssl http2;
        server_name subdomain.domain.ru;
        access_log /var/log/nginx/ssl-access.log;
        error_log /var/log/nginx/ssl-error.log;
        resolver 192.168.1.1;
        ssl_stapling on;
        ssl on;
        ssl_certificate /var/lib/ssl/certs/domain.crt;
        ssl_certificate_key /var/lib/ssl/private/domain.ru.private.key.pem;
        ssl_session_timeout 24h;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;


        location / {
                proxy_pass http://192.168.1.20;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Real-IP $remote_addr;
                }
}
Сертификат один на домен используется для субдоменов.

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: NGINX + SSL
« Ответ #5 : 18.07.2018 16:34:14 »
возможно в /var/lib/ssl/certs/domain.crt нужно ещё дописать промежуточные сертификаты УЦ (Intermidiate Cert), а не только на ваш домен.

Оффлайн zah

  • Давно тут
  • **
  • Сообщений: 140
  • ^_^
Re: NGINX + SSL
« Ответ #6 : 18.07.2018 16:59:29 »
возможно в /var/lib/ssl/certs/domain.crt нужно ещё дописать промежуточные сертификаты УЦ (Intermidiate Cert), а не только на ваш домен.

Дело в том что я дописывал. Верно ли что после дописания промежуточных сертификатов файл приобретает следующий вид?
-----BEGIN CERTIFICATE-----

cert for domain

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----

cert Intermidiate_1

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----

cert Intermidiate_2

-----END CERTIFICATE-----

Если да, то ошибка error 20 at 0 depth lookup:unable to get local issuer certificate остается.
Если скрепить все 3 в один:
139690203117464:error:0906D064:PEM routines:PEM_read_bio:bad base64 decode:pem_lib.c:825:

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: NGINX + SSL
« Ответ #7 : 18.07.2018 17:30:21 »
cert for domain в конце.

Оффлайн zah

  • Давно тут
  • **
  • Сообщений: 140
  • ^_^
Re: NGINX + SSL
« Ответ #8 : 18.07.2018 17:44:08 »
Спасибо за помощь. Оказывается нужно было добавить ещё корневой сертификат. В моём случае связка получилась следующей:

1. Сертификат домена
2. Wildcard_1
3. Wildcard_2
4. Root cert

Оффлайн zah

  • Давно тут
  • **
  • Сообщений: 140
  • ^_^
Re: NGINX + SSL
« Ответ #9 : 18.07.2018 17:57:05 »
cert for domain в конце.

Или правильней перевернуть сделав корневой первым, а доменный последним?

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: NGINX + SSL
« Ответ #10 : 18.07.2018 18:26:14 »
проверьте что скажет https://www.ssllabs.com/ssltest/

Оффлайн zah

  • Давно тут
  • **
  • Сообщений: 140
  • ^_^
Re: NGINX + SSL
« Ответ #11 : 18.07.2018 18:39:22 »
проверьте что скажет https://www.ssllabs.com/ssltest/

Двойку поставили, см. вложения

Анонимный доступ говорит открыт, это nginx настраивать нужно?
TLS_ECDH_anon_WITH_AES_256_CBC_SHA (0xc019)   INSECURE
TLS_ECDH_anon_WITH_AES_128_CBC_SHA (0xc018)   INSECURE
TLS_ECDH_anon_WITH_RC4_128_SHA (0xc016)   INSECURE

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: NGINX + SSL
« Ответ #12 : 18.07.2018 19:07:26 »

Оффлайн zah

  • Давно тут
  • **
  • Сообщений: 140
  • ^_^
Re: NGINX + SSL
« Ответ #13 : 19.07.2018 12:42:41 »
Двойку поставили, см. вложения
https://mozilla.github.io/server-side-tls/ssl-config-generator/

Привел строку ssl_cipchers в такой вид:
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';

Теперь A+, см.вложение.

yaleks, спасибо за помощь!