У меня есть сервер apache nginx, работающий с https: //, правильно настроенный с сертификатом letsencrypt. Я могу подключиться к firefox, chrome, т.е. Все они сообщают, что соединение является безопасным. Однако centos7 и ubuntu 14.04 сообщают об ошибке сертификата:
wget https://gitlab.timeless.cz:8443
Resolving gitlab.timeless.cz (gitlab.timeless.cz)... 82.100.8.23
Connecting to gitlab.timeless.cz (gitlab.timeless.cz)|82.100.8.23|:8443... connected.
ERROR: cannot verify gitlab.timeless.cz's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3’:
Unable to locally verify the issuer's authority.
Согласно https://www.ssllabs.com/ страница правильная.
Выход
openssl s_client -connect gitlab.timeless.cz:8443
является
CONNECTED(00000003)
depth=0 CN = gitlab.timeless.cz
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = gitlab.timeless.cz
verify error:num=27:certificate not trusted
verify return:1
depth=0 CN = gitlab.timeless.cz
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/CN=gitlab.timeless.cz
i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
но должно быть так, что это работает для wget и curl)
CONNECTED(00000003)
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/CN=bk1.timeless.cz
i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
У меня также есть несколько серверов apache, которые отлично работают с сертификатами Let-encrypt. То есть для wget ...
Я не знаю, почему это работает в браузерах, но не в cli.
Редактировать:
Я использую gitlab, установленный из пакета omnibus на Ubuntu с запущенным в комплекте nginx на http-порте 8080 и https 8443. По умолчанию были установлены самоподписанные сертификаты.
Затем я установил apache (стандартные порты 80 443) и настроил его с помощью утилиты letsencrypt-auto. Https работает нормально, все доверяют.
Сначала я попытался настроить apache для прерывания https и перенаправления трафика на незашифрованный nginx (порт 8080). В основном это сработало, но у меня возникли проблемы с входом в систему и git clone. Что делает его непригодным для использования.
Во-вторых, я попытался связать, позволяет шифровать сертификаты, созданные для apache, на nginx, но в / etc / gitlab / ssl есть только файлы .crt и .key. Поэтому я не знаю, как включить сертификат цепи. Странно то, что браузеры без него довольны, но wget, git и curl не работают.
Сегодня я нашел
и мне удалось исправить мое первое решение. Это было предложено для меня, потому что я автоматически обновляю сертификаты и могу использовать стандартный порт для gitlab, и, наконец, я могу использовать один IP-адрес для нескольких служб.
Решение второго решения - включить цепочку в nginx, но она связана с giltab, поэтому обычная конфигурация не применяется.
Недавно у меня возникла проблема, когда система C7 не обновляла некоторые пакеты, потому что удаленному сертификату не доверяли. Я мог проверить это с помощью wget. После некоторых поисков и царапин я решил переустановить пакет ca-сертификатов.
yum reinstall ca-certificates
Это решило мою проблему. Попробуйте переустановить пакет ca-сертификатов в системе, в которой работает wget.
В REDHAT 7 / CentOS 7 / Oracle Linux 7:
Установите сертификат в своей среде.
Вот и все!
Как и ваш собственный вывод openssl, веб-сервер (это apache или nginx? Немного неясен в вашем вопросе) пропускает сертификат промежуточной цепочки. Вам нужна конфигурация SSLCertificateChainFile в apache
Вывод ssllabs правильный, потому что вы тестируете порт 443, который действительно работает с использованием wget или curl. Вам не разрешено тестировать другие порты, кроме 443, в инструменте sslabs.