На самом деле это применимо к множеству других сервисов, для которых мы используем тот же сертификат, но способ, которым 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
будет доверять всей цепочке и перестанет выдавать вам сообщение об ошибке.