Работа с Private Key, различные манипуляции и команды для безопасной работы с приватным (секретным) ключем
OpenSSL - это инструмент командной строки с открытым исходным кодом, который обычно используется для
создания закрытых ключей, создания CSR, установки сертификата SSL / TLS и идентификации информации сертификата.
Определение того, какую версию OpenSSL вы используете, является важным первым шагом при подготовке к созданию закрытого ключа
или CSR. Ваша версия OpenSSL диктует, какие криптографические алгоритмы могут использоваться при создании ключей,
а также о том, какие протоколы поддерживаются. Например, OpenSSL версии 1.0.1 была первой версией,
поддерживающей TLS 1.1 и TLS 1.2. Зная, какая версия OpenSSL, которую вы используете, также важна,
когда вы получаете помощь по устранению неполадок, с которыми вы можете столкнуться.
Используйте следующую команду, чтобы определить, какую версию OpenSSL вы используете:
openssl version -a
В этой команде ключ -a отображает полную информацию о версии, в том числе:
- Номер версии и дата выпуска версии ( OpenSSL 1.0.2g 1 Mar 2016 ).
- Параметры, которые были построены с помощью библиотеки ( options ).
- Каталог, в котором хранятся сертификаты и секретные ключи ( OPENSSLDIR ).
OpenSSL 1.0.2g 1 Mar 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -
D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-
strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-
Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -
DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -
DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -
DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"
Первым шагом к получению сертификата SSL является использование OpenSSL для создания запроса подписи сертификата (CSR),
который должен быть отправлен в центр сертификации CA .
CSR содержит общее имя (ы), которое вы хотите, чтобы ваш сертификат был защищен, информация о вашей компании и ваш
открытый ключ. Чтобы создать CSR, он должен иметь закрытый ключ, из которого создается открытый ключ.
Это можно сделать, используя существующий закрытый ключ или создав новый закрытый ключ.
Из-за проблем с безопасностью, связанных с использованием существующего закрытого ключа,
рекомендуется каждый раз создавать новый закрытый ключ при генерации запроса CSR.
При создании Приватного ключа вы должны решить три вещи:
- алгоритм: оптимально RSA, при необходимости DSA, ECC, ECDSA...
- размер ключа: оптимально 2048 при необходимости можно больше
- использование кодовой фразы - лучше не использовать без необходимости
После принятия решения, вы можете переходить к генерации приватного ключа
Создание (генерация) приватного ключа pKey
openssl genrsa -out yourdomain.key 2048
Эта команда генерирует закрытый ключ в вашем текущем каталоге с именем private.key ( -out yourdomain.key )
с использованием алгоритма RSA ( genrsa ) с длиной ключа 2048 бит ( 2048 ).
Сгенерированный ключ создается с использованием формата OpenSSL под названием PEM.
Просмотр необработанного, закодированного содержимого (формат PEM) закрытого ключа
cat yourdomain.key
Содержимое файла выглядит как случайный фрагмент текста, на самом деле он содержит важную информацию о ключе.
Команда для декодирования закрытого ключа и просмотра его содержимого
openssl rsa -text -in yourdomain.key -noout
* Переключатель -noout отключает вывод кодированной версии закрытого ключа
Просмотр закрытого приватного ключа
openssl rsa -in yourdomain.key -check
Команда для создания открытого ключа на основе приватного
openssl rsa -in yourdomain.key -pubout -out yourdomain_public.key
Снятие пароля passphrase в private key
openssl rsa -in private.key -out private.key .nopass
Создание Приватного ключа и запроса на сертификат
openssl req -out adgrafics.csr -new -newkey rsa:2048 -nodes -keyout adgrafics.key
Генарация запроса для подписи сертификата (CSR) для существующего закрытого ключа
openssl req -out adgrafics.csr -key adgrafics.key -new
Создание нового приватного ключа и самоподписаного сертификата
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout private.key -out certificate.crt
Создание нового CSR запроса на основе существующего сертификата
openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey private.key
Проверка соответствия PrivateKey и запроса CSR
openssl rsa -modulus -in yourdomain.key -noout | openssl sha256
openssl req -modulus -in yourdomain.csr -noout | openssl sha256
Проверка соответствия PrivateKey и сертификата
openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in private.key | openssl md5
|