Назад | Перейти на главную страницу

SSL и Apache: GeoTrust CryptoReport говорит «ОК», но openssl сообщает «невозможно получить сертификат местного эмитента»

На самом деле это применимо к множеству других сервисов, для которых мы используем тот же сертификат, но способ, которым Apache делает это, становится наиболее очевидным и противоречивым при сравнении результатов тестирования.

У нас есть подстановочный сертификат на нашем сайте по адресу https://webmail.lightspeed.ca. Веб-браузеры дают нашим клиентам зеленый замок, CryptoReport от GeoTrust на https://cryptoreport.geotrust.com/checker/ говорит мне, что наш сертификат установлен правильно. Но когда я пытаюсь использовать openssl s_client -connect webmail.lightspeed.ca:443, Я получаю сообщение об ошибке Verify return code: 20 (unable to get local issuer certificate)

Вот как выглядит наша конфигурация Apache для SSL:

SSLEngine on
SSLCertificateFile /mailhome/webmail.lightspeed.ca/ssl.cert
SSLCertificateKeyFile /mailhome/webmail.lightspeed.ca/ssl.key
SSLCACertificateFile /etc/ssl/certs/GeoTrust_DV_SSL_CA-G3.pem

Хотя я понимаю, что соединение шифруется, очевидно, что это сообщение об ошибке также означает, что я не полностью проверен, как я себя называю. Это проблематично, когда мы применяем те же сертификаты, чтобы сказать, наш SMTP или POP-сервер, поскольку некоторые клиенты (например, Outlook для Android) действительно не любят это. Тест на http://www.checktls.com/perl/TestReceiver.pl это не нравится, например, и мы получаем ошибку Cert NOT VALIDATED: unable to get local issuer certificate. Я нахожу это действительно странным, потому что файл GeoTrust_DV_SSL_CA-G3.pem является нашим промежуточным сертификатом CA. И это CA Geotrust для нашего особого типа сертификата с подстановочными знаками.

Для меня это не что иное, как раздражение. Ваша помощь будет принята с благодарностью.

Когда вы используете браузер или тестируете различные онлайн-инструменты, вы используете предварительно настроенные якоря доверия (Сертификат корневого ЦС), тогда как openssl работает с другим набором якоря доверия, обычно определяется и распространяется вашим дистрибутивом.

Тебе нужно сказать openssl где твой якорь доверия расположен с помощью -CAfile <filename> вариант.

Если openssl не доверяет вашему сайту якорь доверия тогда вам нужно будет загрузить его из вашего центра сертификации, а затем передать его openssl с -CAfile вариант. Как только вы это сделаете, openssl будет доверять всей цепочке и перестанет выдавать вам сообщение об ошибке.