Метание узла & ldquo; невозможно проверить первый сертификат & rdquo; ошибка при получении из API

Я запускал API для себя через прокси-сервер nginx, у меня не было проблем с ним до сегодняшнего дня, когда я переиздал его сертификат. Сертификат от Let's Encrypt, я создал файл, который я предоставляю nginx bundle клиентского, промежуточного и корневого сертификатов.

Я могу получить доступ к API просто без предупреждений в браузере, но в ноде я получаю UNABLE_TO_VERIFY_LEAF_SIGNATURE, а в python Cannot connect to host api.furry.bot:443 ssl:None [[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)]

Nginx config для ssl:

##
# SSL Settings
##

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
ssl_certificate     /etc/ssl/main.chained.crt;
ssl_certificate_key /etc/ssl/main.key;
ssl_ciphers         HIGH:!aNULL:!MD5;

Ключ соответствует первому сертификату в цепочке, а файл структурирован
сертификат сервера
промежуточный сертификат
корневой сертификат
[ 118]

Я не могу заставить его работать должным образом, я не хочу просто отключить проверку ssl в моем приложении узла, и я не могу правильно редактировать реализацию python, у меня такое ощущение, что это не так не получаю промежуточный и корневой сертификаты должным образом, но я понятия не имею.

Серверы, к которым обращается nginx, являются серверами экспресс-узлов и одним флеш-сервером (который не имеет отношения к этому).

Конфигурация для рассматриваемого сайта (все остальные конфиги в основном одинаковые, за исключением, конечно, default_server):

server {
    listen 443 default_server ssl;
    listen [::]:443 default_server ipv6only=on ssl;
    server_name furry.bot *.furry.bot;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
     }
}

ssl полностью на стороне nginx, все за кулисами HTTP.

0
задан 26 May 2019 в 22:39

1 ответ

В итоге я решил это путем привязки моего личного сертификата к промежуточному сертификату центра сертификации. (Раньше я делал это в неправильном порядке)

Например, у меня есть сертификат сайтов и промежуточный сертификат.

Поэтому я объединяю их вместе в связанный сертификат, помещая сайт один над промежуточным, вот так, и теперь нет ошибок UNABLE_TO_VERIFY_LEAF_SIGNATURE.

1
ответ дан 29 December 2019 в 12:58

Другие вопросы по тегам:

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