OpenSSL — криптографический пакет с открытым исходным кодом для работы с SSL/TLS. Подготовил шпаргалку со списком полезных команд.
- CRT — сертификат
- KEY — ключ
- CSR — запрос
- DH — ключ Диффи-Хеллмана
- PKCS#12 — сертификат с закрытым ключом (PFX, P12)
- DER — бинарный тип сертификата
- PEM — Base64 тип сертификата
- P7B — (PKCS#7) цепочка сертификатов
- DKIM — (DomainKeys Identified Mail) метод e-mail аутентификации
- RSA — (Rivest–Shamir–Adleman) криптосистема с открытым ключом
Генерация
Установка openssl в Debian
sudo apt-get install opensslГенерация приватного KEY
openssl genrsa -out server.key 4096Генерация пары CSR и KEY
openssl req -out server.csr -new -newkey rsa:2048 -nodes -keyout server.keyWindows 10 — генерация CSR и KEY для SSL сертификатов с помощью подсистемы Linux
Генерация CSR для существующего KEY
openssl req -out server.csr -key server.key -newГенерация CSR для существующих CRT и KEY
openssl x509 -x509toreq -in server.crt -out server.csr -signkey server.keyГенерация самоподписанного CRT на год
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout server.key -out server.crtГенерация v3 CRT для CRT на год
openssl x509 -days 365 -in myCSR.csr -extfile v3.ext -CA myCA.crt -CAkey myCA.key -CAcreateserial -out userCertificate.crtПример v3.ext:
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
Генерация PFX
Windows — генерация PFX (PKCS#12) сертификата с помощью подсистемы Linux
Генерация DKIM
Windows 10 — генерация DKIM ключей с помощью подсистемы Linux
Генерация RSA пары
Windows 10 — генерация ключей RSA с помощью подсистемы Linux
Порядок сертификатов в файле
СЕРТИФИКАТ ПРОМЕЖУТОЧНЫЙ СЕРТИФИКАТ КОРНЕВОЙ СЕРТИФИКАТ
cat server.crt > server.pem
cat intermediate.crt >> server.pem
cat ca.crt >> server.pemГенерация DH
openssl dhparam -out dhparam.pem 2048Проверка
Проверка CSR
openssl req -text -noout -verify -in server.csrverify OK
Проверка KEY
openssl rsa -in server.key -checkRSA key OK
Проверка публичного KEY
openssl rsa -inform PEM -pubin -in pub.key -text -noout
openssl pkey -inform PEM -pubin -in pub.key -text -nooutПрочитать CRT
openssl x509 -in server.crt -text -nooutПрочитать CSR
openssl req -in server.csr -noout -textПроверка соответствия CSR и KEY
Должны совпасть хэши сертификата и ключа.
openssl x509 -noout -modulus -in server.crt | md5sum
openssl rsa -noout -modulus -in server.key | md5sumПроверка соответствия CSR и СRT
Должны совпасть хэши сертификата и запроса.
openssl x509 -noout -modulus -in server.crt | md5sum
openssl req -noout -modulus -in server.csr | md5sum
Проверка PKCS#12
openssl pkcs12 -info -in server.p12Вывод всех сертификатов
openssl s_client -connect internet-lab.ru:443Конвертация
Конвертация DER в PEM
openssl x509 -inform der -in server.cer -out server.pemКонвертация PEM в DER
openssl x509 -outform der -in server.pem -out server.derКонвертация PKCS#12 в PEM
openssl pkcs12 -in server.pfx -out server.pem -nodesWindows — конвертация PFX (PKCS#12) сертификата в CRT (PEM) и KEY с помощью подсистемы Linux
Конвертация PEM в PKCS#12
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile CACert.crtWindows — конвертация SSL сертификата PEM в формат PFX (PKCS#12) с помощью подсистемы Linux
Конвертация P7B в PEM
Windows — конвертация P7B в PEM с помощью подсистемы Linux
Экспорт
Извлечение публичного KEY из приватного KEY
openssl rsa -in privkey.pem -pubout > key.pubИзвлечение публичного KEY из приватного CRT
openssl x509 -pubkey -noout -in cert.pem > pubkey.pemДополнительные команды
Удаление пароля из приветного KEY
openssl rsa -in server.pem -out newserver.pemСписок отозванных серийных номеров
openssl crl -inform DER -text -noout -in list.crlШифрование файлов через rsautl
openssl rsautl -encrypt -in plaintext.txt -out encrypted.txt -pubin -inkey pubkey.pemДешифровка файлов через rsautl
openssl rsautl -decrypt -in encrypted.txt -out plaintext.txt -inkey privkey.pem