web-dev-qa-db-ja.com

OpenSSL-CAで署名するときにサブジェクト代替名(SAN)を追加する

OpenSSLを使用して証明書要求に署名するときに、サブジェクトの別名を追加するにはどうすればよいですか(Windowsの場合)。

IISインターフェイスから基本的な証明書署名要求(CSR)を生成しました。ここで、複数のサブジェクトの別名を追加し、既存のルート証明書で署名して、署名リクエストを完了するための証明書。

見つけることができるすべてのチュートリアルには、新しい秘密キーとまったく新しいCSRの生成が含まれますが、秘密キーは要求元のコンピューター(必ずしもアクセスできるとは限らない)にあるという印象を受けました。別名を追加しながら、リクエストに署名したいだけです。私はOpenSSLとCAのトピックに比較的慣れていないので、これは私の誤解かもしれません。

6
mechgt

個人的には、CSR生成時に代替名を追加するので、それが機能することはわかっています(生成と署名の両方のデフォルトのconfファイルには少しの余白があります)。

後で変更する場合、私が覚えている限りでは、Alt Namesは拡張機能であり、署名中に必要な拡張機能をオーバーライドまたは追加できるようです。私は恥知らずにコピーします:

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)コマンドを使用している場合、使用するサブジェクト値(-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 = [email protected]
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:[email protected]
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:[email protected]

[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
Law29