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.key
Windows 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.csr
verify OK
Проверка KEY
openssl rsa -in server.key -check
RSA 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 -nodes
Windows — конвертация PFX (PKCS#12) сертификата в CRT (PEM) и KEY с помощью подсистемы Linux
Конвертация PEM в PKCS#12
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile CACert.crt
Windows — конвертация 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