OpenSSL - Добавить альтернативное имя субъекта (SAN) при подписании с помощью CA

Как я могу добавить альтернативное имя субъекта при подписании запроса на сертификат с помощью OpenSSL (в Windows, если это имеет значение)?

Я сгенерировал базовый запрос подписи сертификата (CSR) из интерфейса IIS. Теперь я хотел бы добавить несколько альтернативных имен субъектов, подписать их существующим корневым сертификатом и вернуть сертификат, чтобы завершить запрос на подпись.

Каждый учебник, который я смог найти, включает создание нового закрытого ключа и совершенно нового CSR Однако у меня создалось впечатление, что закрытый ключ находится на запрашивающем компьютере (к которому у меня не обязательно будет доступ). Я просто хочу подписать запрос, добавляя альтернативные имена. Я относительно новичок в темах OpenSSL и CA, так что это может быть неправильное понимание с моей стороны.

6
задан 27 May 2016 в 21:12
1 ответ

Лично я добавляю альтернативные имена при генерации CSR, поэтому я знаю, что это работает (в файлах conf по умолчанию есть небольшая ошибка как для генерации, так и для подписи).

Для последующего изменения, насколько возможно насколько я помню, альтернативные имена - это расширения, и кажется, что вы можете переопределить или добавить нужные расширения во время подписи. Я беззастенчиво скопирую:

From: Patrick Patterson @carillonis.com
Newsgroups: mailing.openssl.users
Subject: Re: Sign CSR after modifying data in CSR possible?
Date: Tue, 5 Jan 2010 15:14:05 -0500
Message-ID: <mailpost.1262722567.7762451.82829.mailing.openssl.users@FreeBSD.cs.nctu.edu.tw>

, когда вы используете команду openssl CA (как ни странно: openssl ca), вы можете дать ей множество опций, включая то, какое значение Subject использовать (аргумент -subj ), и какие расширения использовать (с помощью аргументов -extfile и -extensions ).

, чтобы вы могли указать, какие расширения вам нужны, и какую тему вы хотите (вызывая оба значения в CSR следует полностью игнорировать) командой вида:

openssl ca -config /etc/myca/openssl.cnf                       \
    -extfile /etc/myca/openssl-exts.cnf                        \
    -extension sig-medium                                      \
    -subj "/C=CA/O=Example Company/OU=Engineering/CN=John Doe" \
    -in req.csr                                                \
    -out john-doe.pem

Где:

/etc/myca/openssl-exts.cnf содержит:

[ sig-medium ]
basicConstraints                = CA:FALSE
keyUsage                        = critical, digitalSignature
extendedKeyUsage                = emailProtection, anyExtendedKeyUsage
nsComment                       = "Do Not trust - PURE TEST purposes only"
subjectKeyIdentifier            = hash
authorityKeyIdentifier          = keyid,issuer
subjectAltName                  = @testsan
authorityInfoAccess             = @aia_points
crlDistributionPoints           = @crl_dist_points

[ testsan ]
email = test...@example.com
DNS = www.example.com
dirName = test_dir
URI = http://www.example.com/
IP = 172.16.0.1
otherName.0 = 1.3.6.1.4.1.311.20.2.3;UTF8:test@kerberose-domain.internal
otherName.1 = 1.3.6.1.5.5.7.8.7;IA5STRING:_mail.example.com
otherName.2 = 1.3.6.1.5.5.7.8.5;UTF8:testuser@im.example.com

[aia_points]
caIssuers;URI.0=http://www.example.com/caops/Signing-CA.p7c
caIssuers;URI.1=ldap://dir.example.com/<DN of Signing 
CA>?cACertificate;binary?base?objectclass=pkiCA

[crl_dist_points]
URI.0=http://www.example.com/caops/test-signca1-crl.crl
URI.1=ldap://dir.example.com/<DN of Signing 
CA>?certificateRevocationList;binary?base?objectclass=pkiCA
9
ответ дан 3 December 2019 в 00:18

Теги

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