Openssl, перевірка ssl-сертифікатів через
OpenSSL - криптографічний пакет з відкритим вихідним кодом для роботи з SSL / TLS. Дозволяє створювати ключі RSA, DH, DSA і сертифікати X.509, підписувати їх, формувати CSR і CRT. Також є можливість шифрування даних і тестування SSL / TLS сполук.
Розглянемо на прикладах наступні випадки:
1. Генерація CSR і ключа.
2. Створення нового CSR для вже наявного ключа.
3. Перевірка коректності CSR.
4. Перевірка коректності ключа.
5. Перевірка даних SSL-сертифіката.
6. Декодування CSR.
7. Декодування SSL-сертифіката.
8. Порівняння відповідності SSL-сертифіката і CSR.
9. Порівняння відповідності SSL-сертифіката і ключа.
10. Перевірка правильності порядку встановлення CA сертифікатів.
Перше що потрібно зробити - це зайти по SSH на сервер і встановити OpenSSL.
1. Генерація CSR і ключа
Перейдемо в директорію, в якій будуть зберігається файли CSR і ключа:
Далі виконуємо команду створення CSR та ключа:
server.csr - ім'я файлу CSR;
server.key - ім'я файлу ключа;
імена можна змінювати на свій розсуд.
Після введення команди, так само як і через онлайн генератор CSR потрібно ввести дані в поля:
Перевіряємо створилися чи файли:
Файли створилися, все в порядку. Можна замовляти SSL-сертифікат.
Детально про замовлення та встановлення SSL-сертифіката можна ознайомитися в статті "Замовлення і установка SSL сертифікату на хостинг Ukrnames"
Ми отримали файли сертифіката (ukrnames_idua_org, ca_1, ca_2, ca_3) і перемістимо їх так само в папку / etc / ssl / certs /
Чи можемо переходити тепер до наступних пунктів статті.
2. Створення нового CSR для вже наявного ключа.
Трапляються ситуації, коли потрібно продовжити SSL-сертифікат. Потрібно заново вводити CSR запит, але тому що виконувався замовлення SSL-сертифіката близько року тому, то CSR файлу у нас в більшості випадків вже немає.
Дана команда дозволить заново згенерувати CSR-запит на підставі наявного у нас ключа (в даному прикладі ключ у нас знаходиться в папці /etc/ssl/certs/server.key):
І знову потрібно вводити дані CSR.
Потім можемо копіювати дані файлу server.csr і продовжувати SSL-сертифікат, копіювати ключ вже не потрібно, він заново згенерований в старий файл ключа /etc/ssl/certs/server.key.
3. Перевірка коректності CSR
Виконаємо команду для перевірки коректності вмісту CSR:
Отримуємо висновок, в якому варто звернути увагу на поле verify. якщо стоїть статус "OK". значить з CSR все в порядку.
4. Перевірка коректності ключа
Виконаємо команду для перевірки коректності вмісту ключа:
Отримуємо висновок, в якому варто звернути увагу на поле RSA key, якщо стоїть статус "ok", значить з ключем все в порядку.
5. Перевірка даних SSL-сертифіката
Перейменуємо для зручності файл сертифіката ukrnames_idua_org в server.crt за допомогою команди:
Виконаємо команду для перевірки даних SSL-сертифіката:
Отримуємо висновок, в якому можна ознайомитись з подробицями SSL-сертифіката (хто видав, для якого домену виданий і т.д.).
6. Декодування CSR
Іноді після генерації CSR хочеться перевірити правильність введення даних. Для цього досить виконати команду:
Отримаємо висновок, в якому варто звернути увагу на поле "Subject:", в ньому вказані всі вводяться нами дані.
7. Декодування SSL-сертифіката
Вивести дані SSL-сертифіката можна командою:
Висновок буде ідентичний висновку в пункті 5.
8. Порівняння відповідності SSL-сертифіката і ключа
Для того щоб порівняти SSL-сертифікат і ключ, потрібно буде вивести хеш-кодування даних їх файлів і порівняти.
Отримаємо висновок на екран хешів:
Неозброєним поглядом можна побачити, що хеші збігаються, значить сертифікат відповідає ключу.
9. Порівняння відповідності SSL-сертифіката і CSR
Для даного прикладу замінимо дані CSR файлу /etc/ssl/certs/server.csr на інші:
Виконаємо команди для виведення хешів файлів /etc/ssl/certs/server.crt і /etc/ssl/certs/server.csr:
Отримаємо висновок на екран:
Як бачимо, хеші відрізняються - це означає, що сертифікат не збігається з CSR.
10. Перевірка правильності порядку встановлення CA сертифікатів.
На даному сервері, де виконувалися роботи з openssl, встановимо веб-сервер, підключимо домен ukrnames.idua.org і встановимо для нього SSL-сертифікат.
Оскільки веб-сервер не має доступу до папки / etc / ssl / certs /. то копіюємо ключ, сертифікат і проміжні сертифікати в новостворену папку / var / www / ssl /
У файлі конфігурації веб-сервера підключаємо файли SSL-сертифіката. Але щоб все коректно працювало, потрібно створити файл для проміжних сертифікатів (наприклад ca.pem) і внести в нього з певною послідовністю дані файлів проміжних сертифікатів (ca_1, ca_2, ca_3).
Щоб зрозуміти в якій послідовності потрібно додавати файли, виконаємо ряд дій.
Отримуємо дані про видавця основного сертифіката:
Тепер отримаємо дані про проміжні сертифікатах ca_1, ca_2, ca_3 (потрібно звертати увагу тільки на поля "Issuer:" і "Subject:"):
Отримаємо висновок на екран:
Зіставивши дані сертифікату і проміжних сертифікатів, можна зробити висновок, що після основного сертифіката першим проміжним повинен йти сертифікат ca_3, тому що в поле "Subject:" розділ CN файлу ca_3 збігається з полем "Issuer:" розділом CN (CN = COMODO RSA Domain Validation Secure Server CA).
Далі дивимося на поле "Issure:" розділ CN файлу ca_3 (CN = COMODO RSA Certification Authority). Шукаємо в висновках файлів ca_2 і ca_1 збіг в полях "Subject:". Збіг знайдено в файлі ca_2, даний файл ми будемо підключати другим.
І методом виключення, файл ca_1 буде підключатися найостаннішим.
Виконуємо команди для об'єднання всіх файлів проміжних сертифікатів (ca_1, ca_2, ca_3) в один (ca.pem):
Тепер можемо побачити повний ланцюжок встановлених сертифікатів за допомогою команди:
Отримаємо висновок на екран правильної ланцюжка підключення сертифікатів:
Читайте також
- Самоподпісанний SSL сертифікат: створення і установка
- Відповіді на головні питання при виборі SSL сертифікату
- Посилення SSL для веб-сервера Apache
- Посилення SSL для веб-сервера Nginx