Вступ

SSL/TLS-сертифікати забезпечують захищене з’єднання між клієнтом і сервером. Але іноді після встановлення виникають помилки: браузер скаржиться на “недійсний сертифікат”, “невідомий центр сертифікації” чи “неправильний ланцюжок”.
Щоб уникнути цих проблем, важливо вміти перевіряти сертифікат і його ланцюжок довіри безпосередньо на сервері. У Linux для цього зручно використовувати OpenSSL.

Перевірка відповідності приватного ключа і сертифіката

openssl x509 -noout -modulus -in server.crt | openssl md5
openssl rsa  -noout -modulus -in server.key | openssl md5

Якщо MD5-хеші однакові — ключ і сертифікат належать один одному.

Перевірка терміну дії сертифіката

openssl x509 -in server.crt -noout -dates

Приклад виводу:

notBefore=Aug  1 00:00:00 2024 GMT
notAfter=Oct 30 23:59:59 2025 GMT
  • notBefore — сертифікат дійсний починаючи з цієї дати.
  • notAfter — сертифікат закінчується у цю дату

Перегляд вмісту об’єднаного сертифіката

Якщо у вас один .crt файл, він може містити одразу кілька сертифікатів (доменний, проміжні, кореневий).
Подивитися структуру можна так:

openssl crl2pkcs7 -nocrl -certfile server.crt | openssl pkcs7 -print_certs -noout

Буде виведено результат, де: перший блок — сертифікат домену, наступні — проміжні, а останній — кореневий CA (self-signed).

Розділення .crt на сертифікат домену та ланцюжок CA

Виділити перший сертифікат (домен):

awk 'BEGIN{c=0} /BEGIN CERTIFICATE/{c++} c==1{print}' server.crt > domain.crt

Виділити всі наступні (проміжні та кореневі):

awk 'BEGIN{c=0} /BEGIN CERTIFICATE/{c++} c>1{print}' server.crt > chain.crt

Перевірка ланцюжка сертифікатів

openssl verify -CAfile chain.crt domain.crt

Очікувано:

domain.crt: OK

Перевірка через реальне підключення

Щоб переконатися, що сервер віддає правильний сертифікат:

openssl s_client -connect example.com:443 -servername example.com -showcerts

Наприкінці шукайте:

Verify return code: 0 (ok)

Використання на вебсервері

Для налаштування HTTPS зазвичай потрібні два файли:

  • privkey.key — приватний ключ
  • fullchain.crt — сертифікат домену + проміжні сертифікати (без кореневого)

Саме цей fullchain.crt треба вказати у Nginx або Apache

Висновки

Перевірка SSL-сертифіката в Linux — це простий, але важливий крок для забезпечення безпечної роботи вашого сайту.
OpenSSL дозволяє:

  • перевірити, чи відповідає ключ сертифікату,
  • переконатися, що сертифікат ще дійсний,
  • перевірити правильність ланцюжка довіри,
  • побачити, що саме віддає сервер при TLS-підключенні.

Якщо ланцюжок зібрано правильно, ви отримаєте повідомлення OK, а браузери не будуть показувати попередження про безпеку.

Від ittutorials

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *