Я пытаюсь создать самозаверяющий сертификат с OpenSSL с SubjectAltName в нем. Пока я генерирую csr для сертификата, я предполагаю, что мне нужно использовать расширения v3 для OpenSSL x509. Я использую :
openssl req -new -x509 -v3 -key private.key -out certificate.pem -days 730
Может ли кто-нибудь помочь мне с точным синтаксисом?
ssl
openssl
ssl-certificate
x509certificate
x509
моханджот
источник
источник
Ответы:
Это трехэтапный процесс, и он включает в себя изменение
openssl.cnf
файла. Возможно, вы сможете сделать это только с параметрами командной строки, но я так не делаю.Найдите свой
openssl.cnf
файл. Вероятно, он находится в/usr/lib/ssl/openssl.cnf
:В моей системе Debian
/usr/lib/ssl/openssl.cnf
используется встроеннойopenssl
программой. В последних системах Debian он расположен по адресу/etc/ssl/openssl.cnf
Вы можете определить, какой из
openssl.cnf
них используется, добавивXXX
в файл фальшивый файл иopenssl
проверив, не задыхается ли он .Сначала измените
req
параметры. Добавьтеalternate_names
разделopenssl.cnf
с именами, которые вы хотите использовать. Здесь нет существующихalternate_names
разделов, поэтому не имеет значения, куда вы их добавляете.Затем добавьте следующее в существующий
[ v3_ca ]
раздел. Найдите точную строку[ v3_ca ]
:Вы можете изменить
keyUsage
на следующее в разделе[ v3_ca ]
:digitalSignature
иkeyEncipherment
являются стандартной платой за сертификат сервера. Не беспокойтесь об этомnonRepudiation
. Это бесполезный кусок, придуманный парнями / девушками в области информатики, которые хотели стать юристами. Это ничего не значит в юридическом мире.В конце концов, IETF ( RFC 5280 ), браузеры и центры сертификации работают быстро и свободно, поэтому, вероятно, не имеет значения, какой ключ вы используете.
Во-вторых, измените параметры подписи. Найдите эту строку в
CA_default
разделе:И измените его на:
Это гарантирует, что SAN копируются в сертификат. Остальные способы копирования DNS-имен не работают.
В-третьих, сгенерируйте самозаверяющий сертификат:
Наконец, изучите сертификат:
источник
openssl genrsa -out cert.key 3072 -nodes
openssl req -new -x509 -key cert.key -sha256 -config openssl.cnf -out cert.crt -days 730 -subj "/C=US/ST=private/L=province/O=city/CN=hostname.example.com"
subjectAltName=$ENV::ALTNAME
(и установите env. VarALTNAME=DNS:example.com,DNS:other.example.net
).IP
вместоDNS
for,alternate_names
если работаете с IP-адресом. Вы также можете скопировать файл конфигурации локально, а затем указать его в командной строке openssl с помощью-config my_config.cnf
. И, возможно, вам придется раскомментироватьreq_extensions = v3_req
.