Skip to content

Latest commit

 

History

History
157 lines (119 loc) · 4.3 KB

10004.openSSL.md

File metadata and controls

157 lines (119 loc) · 4.3 KB

openssl - справочник

Создание приватного ключа:

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

Извлечь закрытый ключ из 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