Как сделать SSL-сертификат с расширением SAN?

У меня есть пара ключей корневого центра сертификации. Как выпустить новый 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
4
задан 23 April 2017 в 21:20
1 ответ
  1. Моя CSR не содержала SAN. Расширения должны быть указаны в req_extensions вместо x509_extensions .
  2. В команде x509 имеется ошибка :

    Расширения в сертификатах не переносятся в запросы сертификатов и наоборот.

Итак, я решил свою проблему с помощью команды ca :

  1. Создал пустую папку ca / ​​newcerts и пустой файл ca / ​​index.txt .
  2. Отредактированный 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 = локальный хост
     
  3. Выполнить команды:

     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
     
2
ответ дан 3 December 2019 в 03:54

Теги

Похожие вопросы