it-swarm.com.ru

Ошибка SSL: невозможно получить сертификат локального эмитента

У меня проблемы с настройкой SSL на 32-битном сервере Debian 6.0. Я относительно новичок с SSL, поэтому, пожалуйста, потерпите Я включаю как можно больше информации.
Примечание. Истинное имя домена было изменено для защиты личности и целостности сервера.

Конфигурация

Сервер работает с использованием nginx. Это настроено следующим образом:

ssl_certificate           /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key       /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols             SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers               HIGH:!aNULL:!MD5;
ssl_verify_depth          2;

Я заковал свой сертификат, используя описанный метод здесь

cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt

где mysite.ca.crt - это сертификат, выданный мне подписывающим органом, а bundle.crt - это сертификат CA, также отправленный мне моим подписывающим органом. Проблема в том, что я приобрел SSL-сертификат не напрямую у GlobalSign, а у своего хостинг-провайдера Singlehop.

Тестирование

Сертификат правильно проверяется в Safari и Chrome, но не в Firefox. Первоначальный поиск показал, что это может быть проблема с ЦС.

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

Я использовал s_client openssl для проверки соединения и получил вывод, который, похоже, указывает на ту же проблему, что и похожий вопрос . Ошибка заключается в следующем:

depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1

Полную информацию об ответе openssl (с усеченными сертификатами и ненужной информацией) можно найти здесь .

Я также вижу предупреждение:

No client certificate CA names sent

Возможно ли, что это проблема? Как я могу гарантировать, что nginx отправит эти имена CA?

Попытки решить проблему

Я попытался решить проблему, загрузив корневой CA непосредственно из GlobalSign, но получил ту же ошибку. Я обновил корневой CA на своем сервере Debian с помощью команды update-ca-certificates, но ничего не изменилось. Вероятно, это связано с тем, что CA, отправленный моим провайдером, был верным, поэтому он привел к двойному сцеплению сертификата, что не помогает.

0 s:/OU=Domain Control Validated/CN=*.mysite.ca
   i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA

Следующие шаги

Пожалуйста, дайте мне знать, если я могу попробовать что-нибудь или просто все настроено неправильно.

72
Jamie Counsell

jww прав - вы ссылаетесь на неправильный промежуточный сертификат.

Поскольку вы получили сертификат SHA256, вам понадобится промежуточное звено SHA256. Вы можете взять его здесь: http://secure2.alphassl.com/cacert/gsalphasha2g2r1.crt

44
RickK