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

Проверка настройки HTTPS на Apache / Nginx перед использованием

У вас только что есть новый сертификат HTTPS (SSL / TLS), и вы надеетесь, что это правильные промежуточные сертификаты.

Это настраивается в Apache с помощью:

SSLCertificateKeyFile /etc/ssl/www.example.com.key
SSLCertificateChainFile /etc/ssl/www.example.com.chn
SSLCertificateFile /etc/ssl/www.example.com.crt

Или в Nginx с:

ssl_certificate_key /etc/apache2/ssl/www.example.com.key;
ssl_certificate /etc/apache2/ssl/www.example.com.pem;

Вспоминая apachectl configtest только проверяет, существуют ли эти файлы; и nginx -t "завершится ошибкой, если сертификат веб-сайта не будет первым в файле crt, а также если ключ неверен" (спасибо Скиталец104).

Итак, как можно все проверить перед перезапуском?


Возможные проблемы

  1. У вас неправильные промежуточные звенья (например, GeoTrust перечисляет всех своих посредников на одной странице).

  2. Вы случайно смешали файл промежуточного сертификата с файлом сертификата вашего веб-сайта.

  3. Вы включили корневой сертификат (влияет на производительность, поскольку он отправляет ненужные данные).

  4. Вам не хватает одного или нескольких промежуточных сертификатов.

  5. Сертификат не на тот ключ.

  6. Вы оставили эти файлы доступными для чтения всем на сервере (например, chmod 644).

  7. Вы используете неправильный сертификат (домен не входит в CN или SAN)


Некоторые отправные точки

Извлечение информации о файлах ключа, CSR или сертификата:

openssl rsa -check -in "www.example.com.key";
openssl req -text -noout -verify -in "www.example.com.csr";
openssl x509 -text -noout -in "www.example.com.crt";

Получение хэша открытого ключа с помощью sha256 (например, для настройки HPKP):

openssl rsa  -in "www.example.com.key"                             -pubout -outform der | openssl dgst -sha256 -binary | openssl enc -base64
openssl x509 -in "www.example.com.chn" -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
openssl req  -in "www.example.com.csr" -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

openssl s_client -connect www.example.com:443 | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64

Можно проверить через SSL Labs, но только когда вы начали использовать эту конфигурацию.

Есть хороший скрипт командной строки Linux testssl.sh вы можете использовать для этой цели. Я использовал это и для других протоколов (например, FTPS).

В качестве окончательной проверки я все еще буду использовать Тест сервера SSL. Он дает хороший результат теста, который вы можете отправить клиентам ;-).