%META:TOPICINFO{author="roman" comment="reprev" date="1606986355" format="1.1" reprev="1" version="3"}%
%META:TOPICPARENT{name="ListOfFaq"}%
---+!! Полезные команды Openssl

Если что-то не получается - идите [[https://ssl4less.ru/ssl-tools/convert-certificate.html][сюда]]. При копипасте заменить символ "-". Он наверняка будет не тот. Часть команд требует опции -passout pass:PASSWORD или -passin pass:PASSWORD или обоих вместе. 

%TOC%

---++ Типы сертификатов

   * PEM - очень часто используется в Linux based  системах или оборудовании, файлы такого формата сертификата используют расширение .cer, .crt, and .pem.
   * DER - двоичная формат сертификата. DER формат не содержит текста "BEGIN CERTIFICATE/END CERTIFICATE", формат DER чаще всего использует расширение .der
   * PKCS#7 или P7B - эти форматы сертификата хранятся в формате Base64 ASCII и чаще всего имеют расширения файлов .p7b или .p7c.  Файл P7B, кроме самого сертификата содержит цепочку сертификатов (открытых ключей) выпускающих центров сертификации (Intermediate CAs). Этот формат поддерживается в Microsoft Windows и Java Tomcat.
   * PKCS#12 или PFX - эти форматы представляют собой двоичный формат для хранения сертификата сервера, промежуточных сертификатов и закрытого ключа в одном зашифрованном файле. Файлы такого формата сертификата используют расширение .pfx and .p12. PFX файлы обычно используются на windows машинах для импорта/экспорта сертификатов и закрытого ключа. 

---++ Создание нового секретного ключа и запрос на получение сертификата
<verbatim>
openssl req -out cert.csr -newkey rsa:2048 -nodes -key cert.key
</verbatim>

Команда генерирует CSR и файл 2048-битногоRSA-ключа. Если вы собираетесь использовать этот сертификат на Apache или Nginx, то необходимо отправить CSR-файл в центр сертификации. Он предоставит вам заверенный сертификат (в формате der или pem), который нужно настроить на веб-сервере Apache или Nginx.

---++ Создание самоподписанного сертификата

<verbatim>
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -key selfsigned.key -out sfcert.pem
</verbatim>

Команда генерирует самозаверенный сертификат и файл 2048-битного RSA-ключа. 

---++ Верификация CSR-файла

<verbatim>
openssl req -noout -text -in cert.csr
</verbatim>

Верификация необходима, чтобы отправленный в регистрационный центр CSR-файл содержал всю необходимую информацию.

---++ Создание секретного RSA-ключа
<verbatim>
openssl genrsa -out private.key 2048
</verbatim>

---++ Создание CSR с использованием существующего секретного ключа
<verbatim>
openssl req -out certificate.csr -keyexisting.key -new
</verbatim>
Если не хотите создавать новый секретный ключ вместо существующего, выполните приведенную выше команду.

---++ Удаление пароля-фразы из ключа
<verbatim>
openssl rsa -in certkey.key -out nopassphrase.key
</verbatim>
Если вы используете составной пароль (фразу) в файле ключа и работаете на Apache, то при каждом запуске нужно вводить секретную фразу. Если вас это раздражает, то можно использовать приведенную выше команду, чтобы удалить пароль-фразу из существующего ключа.

---++ Верификация секретного ключа
<verbatim>
openss lrsa -in certkey.key -check
</verbatim>

---++ Печать содержимого файла сертификата
<verbatim>
openssl x509 -in certfile.pem -text -noout
</verbatim>

---++ Верификация центра сертификации
<verbatim>
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
</verbatim>

---++ Проверка хеш-значения сертификата
<verbatim>
openssl x509 -noout -hash -in bestflare.pem
</verbatim>

---++ Проверка содержимого сертификата в формате PKCS12
<verbatim>
openssl pkcs12 -info -nodes -in cert.p12
</verbatim>
PKCS12 является двоичным форматом, поэтому вы не сможете просмотреть его содержимое в текстовом редакторе. Для просмотра файла в формате PKCS12 используйте приведенную выше команду.

---++ Проверка даты истечения срока действия PEM-файла
<verbatim>
openssl x509 -noout -in certificate.pem -dates
</verbatim>

---++ Конвертация сертификатов

---+++ Конвертирование x509 в PEM
<verbatim>
openssl x509 -in certificate.cer -outform PEM -out certificate.pem 
</verbatim>

---+++ Преобразование формата DER в PEM
<verbatim>

openssl x509 -inform der -in sslcert.der -out sslcert.pem
</verbatim>

Центр сертификации предоставляет SSL-сертификат в формате .der. Если вам необходимо использовать его в формате apache или .pem, примените приведенную выше команду для соответствующего преобразования.

---+++ Преобразование формата PEM в DER
<verbatim>
openssl x509 -outform der -in sslcert.pem -out sslcert.der
</verbatim>

---+++ Преобразование сертификата и секретного ключа в формат PKCS#12
<verbatim>
openssl pkcs12 -export -out sslcert.pfx -inkey key.pem -in sslcert.crt
</verbatim>

Если необходимо использовать сертификат с оборудованием принимающим только формат PKCS#12, примените приведенную выше команду. Она генерирует один pfx файл, содержащий сертификат и ключ.

Вы также можете включить цепочку сертификатов, передав параметр -chain, как показано в примере ниже.

<verbatim>
openssl pkcs12 -export -out sslcert.pfx -inkey key.pem -in sslcert.cert -chain cacert.pem
</verbatim>

---+++ Конвертирование PEM в P7B
<verbatim>
openssl crl2pkcs7 -nocrl -certfile certificate.pem -out certificate.p7b -certfile CACert.cer 
</verbatim>

---+++ Конвертирование PKCS7 в PEM
<verbatim>
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem
</verbatim> 

---+++ Преобразование формата PKCS12 в PEM-сертификат
<verbatim>
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes 
</verbatim>
Если нужно использовать существующий файл в формате pkcs12 на Apache или только в формате pem, в этом поможет приведенная выше команда.

---+++ Конвертирование PFX в PKCS#8
<verbatim>
openssl pkcs12 -in certificate.pfx -nocerts -nodes -out certificate.pem 
openSSL pkcs8 -in certificate.pem -topk8 -nocrypt -out certificate.pk8 
</verbatim>

---+++ Конвертирование P7B в PFX
<verbatim>
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile  cacert.cer 
</verbatim>

---++ Проверка удалённого хоста

---+++ Проверка SSL-сертификата определенного URL-адреса
<verbatim>
openssls_client -connect yoururl.com:443 -showcerts
</verbatim>

---+++ Проверка срока действия SSL-сертификата для URL-адреса
<verbatim>
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout -enddate
</verbatim>

---+++ Проверка, принимается ли на URL-адресе определённая версия SSL/TLS
<verbatim>
openssl s_client -connect secureurl.com:443 -ssl2
openssl s_client -connect secureurl.com:443 -ssl3
openssl s_client -connect secureurl.com:443 -tls1
openssl s_client -connect secureurl.com:443 -tls1_1
openssl s_client -connect secureurl.com:443 -tls1_2
</verbatim>

Если необходимо проверить, включен ли SSL V2 / V3 или нет, используйте приведенную выше команду. Если он включен, то вы получите сообщение «CONNECTED», в противном случае -сообщение «handshake failure».

---+++ Проверка того, принимается ли конкретный шифр на URL-адресе
<verbatim>
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
</verbatim>

Если шифр будет принят, вы получите сообщение «CONNECTED», иначе - сообщение «handshake failure».


-- Main.RomanDmitriev - 15 Nov 2020


%META:PREFERENCE{name="DENYTOPICVIEW" title="DENYTOPICVIEW" type="Set" value="WikiGuest"}%
%META:PREFERENCE{name="DENYTOPICCHANGE" title="DENYTOPICCHANGE" type="Set" value="WikiGuest"}%
%META:PREFERENCE{name="PERMSET_VIEW" title="PERMSET_VIEW" type="Local" value="registeredusers"}%
%META:PREFERENCE{name="PERMSET_CHANGE" title="PERMSET_CHANGE" type="Local" value="registeredusers"}%
