У меня проблемы с настройкой 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. Первоначальный поиск показал, что это может быть проблема с центром сертификации.
Я исследовал ответ на аналогичный вопрос , но не смог найти решения, так как не совсем понимаю, для чего служит каждый сертификат.
Я использовал openssl s_client для проверки соединения и получил вывод, который, похоже, указывает на ту же проблему, что и аналогичный вопрос . Ошибка следующая:
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?
Попытки решить проблему
Я попытался решить проблему, загрузив корневой ЦС непосредственно из GlobalSign, но получил ту же ошибку. Я обновил корневой ЦС на своем сервере 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
Следующие шаги
Пожалуйста, дайте мне знать, если я могу что-то попробовать, или я просто все неправильно настроил.
AlphaSSL CA - SHA256 - G2
. Однако ваша сеть поставляет промежуточные продуктыAlphaSSL CA - G2
. Я считаю, что вам нужно удалить текущий промежуточный сертификат (AlphaSSL CA - G2
) и заменить его сертификатом с отпечатком пальцаae:bf:32:c3:c8:32:c7:d7...
(AlphaSSL CA - SHA256 - G2
). Также отправлять не нужноGlobalSign Root CA
. Клиент должен внедрять свои доверительные отношения (или на промежуточное звено).