Создание приватного ключа:
openssl genrsa -out yourdomain.key 2048
Декодирование закрытого ключа:
openssl rsa -text -in yourdomain.key -noout
Извеление открытого ключа:
openssl rsa -in yourdomain.key -pubout -out yourdomain_public.key
Создание CSR:
openssl req -new -keyout yourdomain.key -out yourdomain.csr
Верификация CSR:
openssl req -text -in yourdomain.csr -noout -verify
Конвертируем p7b в PEM:
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
Конвертируем CRT в PFX:
openssl pkcs12 -export -out new-pfx-cert.pfx -inkey private-key.key -in certificate.crt
Информация о сертификате (для файла *.crt):
openssl x509 -in certificate.crt -text -noout
Информация о приватном ключе (для файла *.key):
openssl rsa -in privateKey.key -check
Информация о файле сертификата PKCS#12 (для *.pfx или *.p12):
openssl pkcs12 -info -in keyStore.p12
Информация о файле CSR запроса (для файла *.csr):
openssl req -text -noout -verify -in CSR.csr
Проверка сертификата и ключей:
openssl rsa -modulus -in yourdomain.key -noout | openssl sha256
openssl req -modulus -in yourdomain.csr -noout | openssl sha256
openssl x509 -modulus -in yourdomain.crt -noout | openssl sha256
Извлечь закрытый ключ из PFX в файл PEM:
openssl pkcs12 -in filename.pfx -nocerts -out key.pem
Только экспорт сертификата:
openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
Удаление пароля из извлеченного закрытого ключа:
openssl rsa -in key.pem -out server.key
Создание простого сертификата с полным subj:
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -sha256 -days 3650 -nodes -subj "/C=UA/ST=Dnipro/L=Dnipro/O=Home/OU=laspavel/CN=server"
Создание простого сертификата для localhost
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -sha256 -days 3650 -nodes -subj "/CN=localhost"
Создание сертификата с альтернативным именем: Для OpenSSL ≥ 1.1.1:
openssl req -x509 -newkey rsa:4096 -keyout example.com.key -out example.com.crt -sha256 -days 3650 -nodes -subj "/CN=example.com" -addext "subjectAltName=DNS:example.com,DNS:*.example.com,IP:10.0.0.1"
Для OpenSSL ≤ 1.1.0:
openssl req -x509 -newkey rsa:4096 -keyout example.com.key -out example.com.crt -sha256 -days 3650 -nodes -extensions san -config \
<(echo "[req]";
echo distinguished_name=req;
echo "[san]";
echo subjectAltName=DNS:example.com,DNS:*.example.com,IP:10.0.0.1
) \
-subj "/CN=example.com"
Создание мультидоменного сертификата со своим Root CA:
1 этап:
openssl genrsa 8192 > MyCA.key
openssl req -x509 -new -nodes -key MyCA.key -days 3650 > MyCA.crt
openssl genrsa 4096 > example.dev.key
openssl req -new -key example.dev.key > example.dev.csr
2 этап. Создание файла расширения (example.dev.extensions):
We create the file example.dev.extensions:
[ example_dev ]
nsCertType = server
keyUsage = digitalSignature,nonRepudiation,keyEncipherment
extendedKeyUsage = serverAuth
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
subjectAltName = @example_dev_subject
[ example_dev_subject ]
DNS.1 = example.dev
DNS.2 = www.example.dev
DNS.3 = api.example.dev
DNS.4 = test1.example.dev
DNS.5 = test2.example.dev
DNS.6 = pre-prod.example.dev
3 этап: создание сертификата:
openssl x509 -req -days 3600 -CA MyCA.pem -CAkey MyCA.key -CAcreateserial -in example.dev.csr -extfile example.dev.extensions -extensions example_dev > example.dev.crt