У меня есть пара ключей корневого центра сертификации. Как выпустить новый SSL-сертификат с расширением SAN (Subject Alternative Name)? Я пробовал этот
openssl genrsa -out ssl.key 2048
openssl req -new -config ssl.conf -key ssl.key -out ssl.csr
openssl x509 -req -sha256 -days 3650 -CAcreateserial -CAkey root.key -CA root.crt -in ssl.csr -out ssl.crt
ssl.conf:
[req]
prompt = no
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
[req_distinguished_name]
CN = 127.0.0.1
[v3_ca]
subjectAltName = @alt_names
[alt_names]
IP.1 = 127.0.0.1
IP.2 = ::1
DNS.1 = localhost
, но сгенерированный сертификат не содержал SAN.
Однако самозаверяющий сертификат, созданный следующей командой, содержит SAN:
openssl req -new -x509 -sha256 -days 3650 -config ssl.conf -key ssl.key -out ssl.crt
req_extensions
вместо x509_extensions
. x509
имеется ошибка :
Расширения в сертификатах не переносятся в запросы сертификатов и наоборот.
Итак, я решил свою проблему с помощью команды ca
:
ca / newcerts
и пустой файл ca / index.txt
. Отредактированный ssl.conf
:
[ca]
default_ca = CA_default
[CA_default]
dir = ./ca
база данных = $ dir / index.txt
new_certs_dir = $ dir / newcerts
серийный = $ dir / serial
private_key = ./root.key
сертификат = ./root.crt
default_days = 3650
default_md = sha256
policy = policy_anything
copy_extensions = copyall
[policy_anything]
countryName = необязательно
stateOrProvinceName = необязательно
localityName = необязательно
organizationName = необязательно
organizationUnitName = необязательно
commonName = поставляется
emailAddress = необязательно
[req]
подсказка = нет
отличительное_имя = req_distinguished_name
req_extensions = v3_ca
[req_distinguished_name]
CN = 127.0.0.1
[v3_ca]
subjectAltName = @alt_names
[alt_names]
IP.1 = 127.0.0.1
IP.2 = :: 1
DNS.1 = локальный хост
Выполнить команды:
openssl genrsa -out ssl.key 2048
openssl req -new -config ssl.conf -key ssl.key -out ssl.csr
openssl ca -config ssl.conf -create_serial -batch -in ssl.csr -out ssl.crt