Показать сертификат:
openssl x509 -text -noout -in certificate.crt
Проверить pfx или p12:
openssl pkcs12 -info -noout -in certificate.pfx
Показать все сертификаты:
openssl storeutl -noout -text -certs certificate.ca-bundle
Показать fingerprint сертификата:
openssl x509 -in certificate.crt -noout -fingerprint #-sha256 openssl pkcs12 -in certificate.pfx -info -nokeys | openssl x509 -noout -fingerprint
md5 хэш модуля ключа:
openssl rsa -noout -modulus -in selfsigned.key | openssl md5 #rsa openssl pkey -pubout -in selfsigned.key | openssl md5 #rsa,ecc
md5 хэш модуля сертификата:
openssl x509 -noout -modulus -in selfsigned.crt | openssl md5 #rsa openssl x509 -noout -pubkey -in selfsigned.crt | openssl md5 #rsa,ecc
md5 хэш модуля запроса:
openssl req -noout -modulus -in selfsigned.csr | openssl md5 #rsa openssl req -noout -pubkey -in selfsigned.csr | openssl md5 #rsa,ecc
Если полученные md5 хэши одинаковы — значит файлы (crt, key и csr) соответствую друг другу.
Цепочка AAACertificateServices.crt < USERTrustECCAAACA.crt < SectigoECCDomainValidationSecureServerCA.crt < domain.crt:
openssl verify -CAfile AAACertificateServices.crt -untrusted USERTrustECCAAACA.crt -untrusted SectigoECCDomainValidationSecureServerCA.crt domain.crt
Цепочка ca.crt < chain.crt < domain.crt:
openssl verify -CAfile ca.crt -untrusted chain.crt domain.crt
Цепочка ca-bundle.crt (сверху chain.crt, снизу ca.crt) < domain.crt:
openssl verify -CAfile ca-bundle.crt domain.crt
openssl pkcs12 -in domain.pfx -info -nokeys
Выпустить ключ и сертифкат в текущей директории:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout registry.git.domain.com.key -out registry.git.domain.com.crt -subj '/C=RU/ST=Ural/L=Chelyabins/O=DKB/OU=IT/CN=registry.git.domain.com'
или с минимум значений subject, остальные берутся из openssl.conf:
Выпустить ключ Diffie Hellman:
openssl dhparam -out dhparams.pem 2048
Создать pfx из crt и key:
openssl pkcs12 -export -out cert.pfx -inkey cert.key -in cert.crt
для старых ОС (Windows 2012R2)
openssl pkcs12 -export -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac -out cert.pfx -inkey cert.key -in cert.crt
Создать pfx из crt, CA.crt и key:
openssl pkcs12 -export -out cert.pfx -inkey cert.key -in cert.crt -certfile cert.ca-bundle
Создать crt из p7b:
openssl pkcs7 -print_certs -in cert.p7b -out cert.crt
Создать crt из pfx:
openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.crt
Создать rsa key из pfx:
openssl pkcs12 -in cert.pfx -nocerts -nodes | openssl rsa -out rsapriv.key
Объединить crt и ca_bundle (важна очерёдность):
cat cert.crt cert.ca-bundle > domain.crt
Создать der из pem:
openssl x509 -outform der -in crt.pem -out crt.der
Зашифровать:
tar cz /folder | openssl enc -aes-256-cbc -pbkdf2 -pass pass:1 -e > folder.tgz.enc
Расшифровать:
openssl enc -aes-256-cbc -in folder.tgz.enc -pbkdf2 -pass pass:1 -d | tar xz
Показать дату истечения сертификата сайта:
SITE=google.com echo | openssl s_client -connect $SITE:443 -servername $SITE 2>/dev/null | openssl x509 -noout -dates 2>/dev/null | grep notAfter | cut -d'=' -f2
Показать используемые cipherSuites:
nmap --script ssl-enum-ciphers -p 443 domain.com
Запустить контейнер с передачей имени сайта в параметре:
docker run --rm drwetter/testssl.sh google.com
Создать структуру директорий:
mkdir /root/ca/ cd /root/ca mkdir certs private touch index.txt echo 01 > serial echo 01 > crlnumber
Раздел [ca] - обязательный первый раздел с указанием раздела ЦС по умолчанию.
Раздел [ policy_match ] будет применяться для создания сертификатов корневого центра сертификации и [ policy_anything ] для создания сертификатов промежуточного центра сертификации.
Значения в разделе [ req ] применяются при создании запросов на подпись сертификатов (CSR) или сертификатов. Ключ x509_extensions указывает имя раздела, содержащего расширения, которые мы хотим включить в сертификат.
В [ req_distinguished_name ] значения по умолчанию.
[ v3_ca ] расширение для создания корневого сертификата ЦС и расширение [ v3_intermediate ] для промежуточного сертификата ЦС. Значение pathlen ограничивает создание дополнительных промежуточных центров сертификации в цепочке, 0 - последний промежуточный сертификат.
Создать пароль, закрытый ключ для корневого ЦС и проверить его:
cat /dev/urandom | tr -dc 'a-zA-Z0-9.,_=\-' | head -c 18 >.pwd openssl genrsa -aes256 -passout file:.pwd -out private/cakey.pem 4096 openssl rsa -noout -text -in private/cakey.pem -passin file:.pwd | grep -i key
Вывод:
RSA Private-Key: (4096 bit, 2 primes)
Создать сертификат ЦС и посмотреть его:
openssl req -new -x509 -days 3650 -passin file:.pwd -config openssl.cnf -extensions v3_ca -key private/cakey.pem -out certs/cacert.pem openssl x509 -noout -text -in certs/cacert.pem | head -n14
Создать структуру директорий:
mkdir /root/ca/intermediate mkdir intermediate/certs intermediate/csr intermediate/private touch intermediate/index.txt echo 01 > intermediate/serial echo 01 > intermediate/crlnumber cp openssl.cnf intermediate
Поменять в ~/ca/intermediate/openssl.cnf строки на:
dir = /root/ca/intermediate certificate = $dir/certs/intermediate.cacert.pem private_key = $dir/private/intermediate.cakey.pem policy = policy_anything
Создать пароль, закрытый ключ для корневого ЦС и проверить его:
openssl genrsa -aes256 -passout file:.pwd -out intermediate/private/intermediate.cakey.pem 4096 openssl rsa -noout -text -in intermediate/private/intermediate.cakey.pem -passin file:.pwd | grep -i key
Вывод:
RSA Private-Key: (4096 bit, 2 primes)
Создать запрос на подписание сертификата промежуточного ЦС:
openssl req -new -sha256 -config intermediate/openssl.cnf -passin file:.pwd -key intermediate/private/intermediate.cakey.pem -out intermediate/csr/intermediate.csr.pem
Подписать, сгенерировать сертификат промежуточного ЦС и проверить:
openssl ca -config openssl.cnf -extensions v3_intermediate_ca -days 3650 -notext -batch -passin file:.pwd -in intermediate/csr/intermediate.csr.pem -out intermediate/certs/intermediate.cacert.pem openssl verify -CAfile certs/cacert.pem intermediate/certs/intermediate.cacert.pem
Создать и проверить цепочку сертификатов:
cat intermediate/certs/intermediate.cacert.pem certs/cacert.pem > intermediate/certs/ca-chain-bundle.cert.pem openssl verify -CAfile certs/cacert.pem intermediate/certs/ca-chain-bundle.cert.pem
https://www.golinuxcloud.com/openssl-create-certificate-chain-linux/
https://www.golinuxcloud.com/openssl-generate-csr-create-san-certificate/
http://wiki.cacert.org/FAQ/subjectAltName
Генерировать ключ:
openssl ecparam -out private.key -name prime256v1 -genkey
Создать запрос на сертификат / CSR:
openssl req -new -key private.key -out server.csr
Обязательные поля:
Установить библиотеки ГОСТ для openssl:
apt install libengine-gost-openssl
Добавить в начало файла /etc/ssl/openssl.cnf перед первым заголовком раздела в квадратных скобках:
Создать закрытый ключ с алгоритмом gost2012_256 и сертификат:
openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:TCB -out ca.key openssl req -new -x509 -md_gost12_256 -days 365 -key ca.key -out ca.cer \ -subj "/C=RU/ST=Russia/L=Moscow/O=Organization/OU=Organization CA/CN=Organization CA Root"
https://github.com/gost-engine/engine
https://www.altlinux.org/ГОСТ_в_OpenSSL
Временное решение, установить libssl1.1_1.1.1h-1_amd64.deb, openssl_1.1.1h-1_amd64.deb и выполнить:
export OPENSSL_CONF=
чтобы игнорировать проблемный параметр в конфигурационном файле /usr/lib/ssl/openssl.cnf:
CipherString = DEFAULT@SECLEVEL=2
или поменять его на:
CipherString = DEFAULT@SECLEVEL=1
https://github.com/syldrathecat/nxtlauncher/issues/13
https://stackoverflow.com/questions/58342699/php-curl-curl-error-35-error1414d172ssl-routinestls12-check-peer-sigalgwr
https://www.ssllabs.com - Тестирование SSL и TLS соедиения
https://tls.imirhil.fr/ - Check SSL, TLS, SSH
https://ssl-config.mozilla.org/ (https://mozilla.github.io/server-side-tls/ssl-config-generator/) - Генератор SSL конфигурационных файлов для web серверов