Инструменты пользователя

Инструменты сайта


linux:openssl

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:openssl [2023/07/11 16:42]
admin
linux:openssl [2025/04/04 13:10] (текущий)
admin
Строка 1: Строка 1:
 ====== OpenSSL ====== ====== OpenSSL ======
  
- +===== Разное ===== 
-===== rand =====+==== rand ====
 Генерирует последовательность случайных байтов\\ Генерирует последовательность случайных байтов\\
- 
 <code bash> <code bash>
   # Случайная строка (10 символов)   # Случайная строка (10 символов)
Строка 11: Строка 10:
  
  
-===== Получение сертификата ===== 
-Можно получить/скачать сертификат с указанного сайта\\ 
  
 +==== Работа с сертами ====
 +Можно получить/скачать сертификат с указанного сайта\\
 <code bash> <code bash>
   # Просмотреть сведения о сертификате   # Просмотреть сведения о сертификате
Строка 27: Строка 26:
 keytool -import -trustcacerts -keystore /usr/lib/jvm/bellsoft-java8-full.x86_64/jre/lib/security/cacerts \ keytool -import -trustcacerts -keystore /usr/lib/jvm/bellsoft-java8-full.x86_64/jre/lib/security/cacerts \
    -storepass changeit -noprompt -alias slack_notify -file /tmp/slack_notify.crt    -storepass changeit -noprompt -alias slack_notify -file /tmp/slack_notify.crt
-</code> 
- 
-<code bash> 
-  # Содержимое хранилища 
-keytool -list [-v] -keystore kafka.keystore.p12 (или .jks) [-storepass passwd] 
- 
-  # Экспорт содержащегося серта в файл 
-keytool -exportcert -keystore kafka.keystore.p12 -alias myCert -file toFile.cer 
- 
-  # Импорт 
-keytool -importcert -keystore kafka.keystore.jks -alias first -file first.cer 
  
   # Узнать кто выдал сертификат   # Узнать кто выдал сертификат
   # далее, по указанной ссылке можно скачать вышестоящий, просто wget   # далее, по указанной ссылке можно скачать вышестоящий, просто wget
 openssl x509 -in <certificate.pem> -text -noout | grep -i issuer openssl x509 -in <certificate.pem> -text -noout | grep -i issuer
- 
   # проверка какая то   # проверка какая то
 openssl verify <certificate.pem> openssl verify <certificate.pem>
Строка 48: Строка 35:
   # Перчень установленных сертов в системе   # Перчень установленных сертов в системе
 awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt
 +</code>
  
 +
 +[[https://gist.github.com/Hakky54/b30418b25215ad7d18f978bc0b448d81|Cheat Sheet]]\\
 +<code bash>
 +# Просмотр сведений
 +openssl x509 -in server.crt -text -noout
 +openssl x509 -in server.cer -text -noout
 +
 +# Проверка закрытого ключа
 +openssl rsa -in server.key -check
 </code> </code>
  
  
 +**keytool** [[https://keystore-explorer.org/downloads.html|gui утилита]]\\
 +<code bash>
 +  # Содержимое хранилища
 +keytool -list [-v] -keystore kafka.keystore.p12 (или .jks) [-storepass passwd]
 +  # Экспорт содержащегося серта в файл
 +keytool -exportcert -keystore kafka.keystore.p12 -alias myCert -file toFile.cer
 +  # Импорт
 +keytool -importcert -keystore kafka.keystore.jks -alias first -file first.cer
 +  # Для создания нового контейнера, нужно просто указать несуществующий файл, создастся
  
-===== Установка сертификата =====+  # Удаление серта 
 +keytool -delete -alias <my-name> -keystore <my-name> 
 +</code>
  
 +
 +<details>
 +<summary>:!: Про jks </summary>
 +Работа с контейнером для джавы\\
 +Есть пароль для контейнера, есть пароли для сертов, могут совпадать, тогда меньше гемора\\
 +Бывает так что показывает только те серты, что подходт под введенный пароль\\
 +При запуске джарки, есть такие аргументы для задания параметров
 +  -Djavax.net.ssl.keyStore=cert.jks\\
 +  -Djavax.net.ssl.keyStorePassword=changeit\\
 +  -Djavax.net.ssl.trustStor=cacerts\\
 +  -Djavax.net.ssl.trustStorePassword=changeit\\
 +</details>
 +
 +
 +
 +==== Установка сертификата ====
 <code bash> <code bash>
 +trust list
 sudo cp mycert.crt /usr/share/pki/ca-trust-source/anchors/ sudo cp mycert.crt /usr/share/pki/ca-trust-source/anchors/
 sudo update-ca-trust sudo update-ca-trust
Строка 62: Строка 87:
 sudo cp mycert.crt /usr/local/share/ca-certificates/ sudo cp mycert.crt /usr/local/share/ca-certificates/
 sudo update-ca-certificates sudo update-ca-certificates
 +</code>
  
-trust list+ 
 + 
 +==== Форматы ==== 
 +<details> 
 +<summary>:!: PEM </summary> 
 +PEM - наиболее распространенный формат для X.509 сертификаты, CSRи криптографические ключи. Файл PEM представляет собой текстовый файл, может содержать сертификат конечного объекта, закрытый ключ или несколько сертификатов\\ 
 +PEM файлы обычно видны с расширениями .crt, .pem, .cer, и .key (для закрытых ключей), возможно и что нить типа ".ca-bundle"\\ 
 + 
 +Выглядит например так  
 +<code bash> 
 +-----BEGIN CERTIFICATE----- 
 +MIIH/TCCBeWgAwIBAgIQaBYE3/M08XHYCnNVmcFBcjANBgkqhkiG9w0BAQsFADBy 
 +MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24x 
 +(...) 
 +-----END CERTIFICATE-----
 </code> </code>
 +</details>
 +
 +
 +
 +
 +===== Примеры =====
 +
 +<details>
 +<summary>:!: Генерация самоподписанного ключа</summary>
 +
 +<code bash>
 +#!/bin/bash
 +
 +mkdir -p certs
 +cd certs
 +
 +# create self signed root CA
 +openssl genrsa -out test_ca.key 4096
 +openssl req -x509 -new -nodes -key test_ca.key -sha256 -days 1024 -subj "/C=RU/ST=SR/O=Org Test Root CA, Inc./CN=Test Root CA" -out test_ca.crt
 +
 +
 +# create test key and csr for app
 +openssl genrsa -out test_app.key 4096
 +openssl req -new -sha256 -key test_app.key -subj "/C=RU/ST=SR/O=Org Test APP, Inc./CN=client.app.org" -out test_app.csr
 +
 +# sign test cert by CA for APP
 +openssl x509 -req -in test_app.csr -CA test_ca.crt -CAkey test_ca.key -CAcreateserial -out test_app.crt -days 3650 -sha256
 +
 +echo "DONE!"
 +</code>
 +</details>
 +
 +
 +
 +<details>
 +<summary>:!: Генерация, подпись, сбор в комплекты</summary>
 +
 +Для подписи используем сторонний ЦС, на своей стороне, с помощью файла "req", формируем закрытый ключ и запрос на подпись\\
 +После получаем подписанный, открытый ключ, далее собираем в ключевую пару и JKS-ники\\
 +Корневой сертификат так же получаем от ЦС\\
 +
 +<code bash>
 +# Из файла с запросом генерируем закрытый ключ
 +openssl req -new -newkey rsa:2048 -keyout my_cert.key -out my_cert.csr -config req.txt
 +
 +# ==== Подпись, генерация открытого ключа ====
 +
 +# Из закрытого, открытого и корневого сертов, генерируем ключевую пару (.p12)
 +openssl pkcs12 -export -in my_cert.crt -inkey my_cert.key -out my_cert.p12 -name SARM_PD10 -CAfile my_cert_ca.crt -caname MY.RU -passout pass:123
 +
 +# Из ключевой пары генерируем JKS
 +keytool -importkeystore -srckeystore my_cert.p12 -srcstoretype PKCS12 -destkeystore my_cert.jks -deststoretype JKS -alias "MYCERT" -destalias "MYCERT" -srcstorepass 123 -deststorepass 123
 +
 +# Из корневого ключа генерируем Truststore
 +keytool -import -alias MYCERT -file my_cert_ca.crt -keystore my_cert_truststore.jks -noprompt -deststorepass 123 -deststoretype JKS
 +</code>
 +
 +Пример файла с запросом\\
 +<code>
 +[req]
 +default_bits = 2048
 +distinguished_name = req_distinguished_name
 +req_extensions = req_ext
 +prompt = no
 +
 +[req_distinguished_name]
 +C = RU
 +O = MY_COMP
 +commonName = example.ru
 +
 +[req_ext]
 +subjectAltName = @alt_names
 +keyUsage=digitalSignature, keyEncipherment
 +extendedKeyUsage=serverAuth
 +
 +[alt_names]
 +DNS.1 = first.example.ru
 +DNS.2 = second.example.ru
 +DNS.3 = *.example.ru
 +</code>
 +
 +</details>
 +
 +
 +
 +
 +
  
linux/openssl.1689093748.txt.gz · Последнее изменение: 2023/07/11 16:42 — admin