21 приклад OpenSSL, який допоможе вам у реальному світі

Зміст

Створення, адміністрування та конвертація SSL-сертифікатів за допомогою OpenSSL

OpenSSL є одним з найпопулярніших інструментів для управління, генерації та трансформації SSL-сертифікатів.

У вашій роботі часто виникатимуть ситуації, коли вам потрібно буде використовувати OpenSSL для різноманітних задач, тому нижче я зібрав список корисних команд як довідковий матеріал.

У цій статті ми розглянемо типові команди OpenSSL, що знаходять застосування у реальних сценаріях.

Перед тим, як продовжити, важливо розібратися з деякими абревіатурами, пов’язаними з сертифікатами:

  • SSL – Secure Sockets Layer (рівень захищених сокетів)
  • CSR – Certificate Signing Request (запит на підписання сертифіката)
  • TLS – Transport Layer Security (безпека транспортного рівня)
  • PEM – Privacy Enhanced Mail (пошта з розширеною конфіденційністю)
  • DER – Distinguished Encoding Rules (відмінні правила кодування)
  • SHA – Secure Hash Algorithm (безпечний алгоритм хешування)
  • PKCS – Public-Key Cryptography Standards (стандарти криптографії з відкритим ключем)

Примітка: Якщо ви не знайомі з цими термінами, вам може допомогти курс з управління SSL/TLS.

Генерація нового приватного ключа та запиту на підписання сертифіката (CSR)

openssl req -out techukraine.net.csr -newkey rsa:2048 -nodes -keyout techukraine.net.key

Ця команда генерує CSR та 2048-бітний файл приватного ключа RSA. Для використання сертифіката з Apache чи Nginx, вам необхідно надіслати CSR в сертифікаційний центр (CA), де вам нададуть підписаний сертифікат (зазвичай у форматі der або pem), який потрібно буде налаштувати на вашому веб-сервері.

Створення самопідписаного сертифіката

openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Ця команда створює самопідписаний сертифікат разом із відповідним 2048-бітним приватним ключем RSA. Також використовується хешування SHA256, як більш безпечний стандарт на даний момент.

Підказка: За замовчуванням, самопідписаний сертифікат є дійсним лише протягом місяця. Ви можете скористатися параметром `-days`, щоб встановити інший термін дії.

Приклад: Створення самопідписаного сертифіката, дійсного два роки:

openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Перевірка CSR-файлу

openssl req -noout -text -in techukraine.net.csr

Перевірка CSR-файлу важлива для гарантії того, що ви відправляєте правильні дані до сертифікаційного центру.

Створення приватного ключа RSA

openssl genrsa -out private.key 2048

Якщо вам необхідно згенерувати лише приватний ключ RSA, скористайтеся наведеною вище командою. Вказано 2048 біт для забезпечення надійнішого шифрування.

Видалення парольної фрази з приватного ключа

openssl rsa -in certkey.key -out nopassphrase.key

Якщо ваш приватний ключ захищено парольною фразою, то щоразу під час запуску Apache вам доведеться вводити пароль. Ви можете скористатися наведеною командою, щоб видалити пароль із ключа, уникаючи необхідності вводити пароль при кожному перезапуску.

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

openssl rsa -in certkey.key –check

Якщо у вас є сумніви щодо коректності вашого файлу приватного ключа, скористайтеся наведеною вище командою для його перевірки.

Перевірка файлу сертифіката

openssl x509 -in certfile.pem -text –noout

Щоб перевірити вміст сертифіката, такий як CN, OU та іншу інформацію, скористайтеся цією командою, щоб переглянути його деталі.

Перевірка органу, що підписав сертифікат

openssl x509 -in certfile.pem -noout -issuer -issuer_hash

Сертифікаційний центр підписує кожен сертифікат та верифікує його в разі потреби.

Перевірка хеш-значення сертифіката

openssl x509 -noout -hash -in bestflare.pem

Конвертація DER в PEM

openssl x509 –inform der –in sslcert.der –out sslcert.pem

Сертифікаційні центри часто надають сертифікати у форматі .der. Якщо вам потрібен формат .pem для Apache або інших програм, скористайтеся цією командою.

Конвертація PEM в DER

openssl x509 –outform der –in sslcert.pem –out sslcert.der

Якщо вам потрібно перетворити формат .pem у формат .der, ця команда стане в пригоді.

Конвертація сертифіката і приватного ключа у формат PKCS#12

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem

Якщо ви використовуєте Java або іншу програму, що підтримує лише формат PKCS#12, то ця команда згенерує один файл pfx, що містить як сертифікат, так і файл приватного ключа.

Підказка: ви також можете включити сертифікат ланцюжка, додавши параметр `-chain`, як показано нижче:

openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem

Створення CSR з існуючого приватного ключа

openssl req –out certificate.csr –key existing.key –new

Якщо ви хочете використати наявний приватний ключ замість створення нового, скористайтеся наведеною вище командою.

Перевірка вмісту сертифіката формату PKCS12

openssl pkcs12 –info –nodes –in cert.p12

PKCS12 — це бінарний формат, тому вміст неможливо переглянути у текстовому редакторі. Наведена команда дозволить переглянути вміст файлу PKCS12.

Конвертація PKCS12 в PEM

openssl pkcs12 –in cert.p12 –out cert.pem

Якщо ви хочете використовувати наявний файл pkcs12 з Apache або перетворити його у формат pem, ця команда буде корисною.

Перевірка SSL-сертифіката конкретної URL-адреси

openssl s_client -connect yoururl.com:443 –showcerts

Цю команду часто використовують для перевірки SSL-сертифіката конкретної URL-адреси. Вона надає детальну інформацію про протокол, шифрування та сертифікат.

Перевірка версії OpenSSL

openssl version

Якщо ви відповідаєте за безпеку OpenSSL, перевірка версії має бути першим кроком.

Перевірка дати закінчення терміну дії сертифіката у форматі PEM

openssl x509 -noout -in certificate.pem -dates

Ця команда корисна для моніторингу терміну дії сертифіката. Вона показує дати в синтаксисі notBefore та notAfter. Вам потрібно перевірити notAfter, щоб переконатися, що термін дії сертифіката ще не закінчився.

Наприклад:

[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates
notBefore=Jul 4 14:02:45 2015 GMT
notAfter=Aug 4 09:46:42 2015 GMT
[[email protected] opt]#

Перевірка терміну дії сертифіката SSL для URL-адреси

openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate

Це корисна команда для віддаленого моніторингу терміну дії сертифіката для певної URL-адреси.

Наприклад:

[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate

notAfter=Dec 8 00:00:00 2015 GMT

Перевірка, чи підтримується SSL V2 або V3 для URL-адреси

Перевірка SSL V2:

openssl s_client -connect secureurl.com:443 -ssl2

Перевірка SSL V3:

openssl s_client -connect secureurl.com:443 –ssl3

Перевірка TLS 1.0:

openssl s_client -connect secureurl.com:443 –tls1

Перевірка TLS 1.1:

openssl s_client -connect secureurl.com:443 –tls1_1

Перевірка TLS 1.2:

openssl s_client -connect secureurl.com:443 –tls1_2

Якщо ви захищаєте веб-сервер і хочете перевірити, чи ввімкнено SSL V2/V3, скористайтеся наведеною вище командою. Якщо протокол активовано, ви отримаєте “З’ЄДНАНО”, в іншому випадку “збій рукостискання”.

Перевірка, чи підтримується певний шифр для URL-адреси

openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443

Якщо під час перевірки безпеки було виявлено, що використовуються слабкі шифри, цю команду можна використати для перевірки підтримки певного шифру.

Змініть шифр та URL-адресу, що ви хочете перевірити. Якщо шифр підтримується, ви отримаєте “CONNECTED”, інакше “handshake failure”.

Сподіваюся, наведені вище команди допоможуть вам краще зрозуміти можливості OpenSSL для управління сертифікатами SSL вашого веб-сайту.