証明書のチェーンをセットアップします。サブCAに署名する自己署名の「ルート」CAを上部に配置すると、サブCAに署名し、クライアントとサーバーの証明書に署名できます。セットアップ時openssl.cnf
、keyUsage
パラメータに気付きました。これは明らかに、キーが使用されることになっているものに設定する必要があります。パラメーター値は文書化されていますが、特定の状況でどのパラメーターを使用するかについての情報が見つかりません。
keyUsage
値は何を意味し、次の状況で何を使用すればよいですか?
また、nsCertType
など、他の拡張機能を特定の値で指定する必要がありますか?
CA証明書は、それがルートであるか中間であるかに関係なく、keyCertSign
拡張子が必要です。 CA証明書を使用して失効リスト(CRL)にも署名したい場合(通常はそれが必要です)、cRLSign
も追加する必要があります。その他のkeyUsagesは、CA証明書では回避でき、回避する必要があります。
Opensslが受け入れる値のリストは ここに記載 です。
エンドエンティティ証明書の場合、opensslで文書化されている他の任意のkeyUsagesを使用できます。上記のCA拡張機能を含めないようにしてください。セキュリティの観点からは、必要以上にkeyUsagesを使用しないでください(特に、署名と暗号化には別の証明書を使用することをお勧めします)が、これは厳密な要件ではありません。
従来のkeyUsagesとは別に、extendedKeyUsage
(EKU)拡張機能もあることに注意してください。これは、RFCの事前定義値に限定されず、理論的には任意のOIDを保持できます既知の値は、たとえば、証明書がタイムスタンプまたはOCSP応答に署名するためのものです。
nsCertType
を使用する必要はありません。これらは、他のすべてのns *拡張機能とともに、古くからNetscapeによって定義されており、今後は使用しないでください。おそらくそれらをまだ使用しているソフトウェアはありません。
他の拡張機能の場合、絶対に必要なのはbasicConstraints
拡張機能だけで、それに応じて設定する必要があるブールCA
フラグがあります。 authorKeyIdentifierおよびsubjectkeyIdentifier拡張も強く推奨されます。
cRLSign
、digitalSignature
、keyCertSign
V3プロファイル:
[ v3_ca ]
basicConstraints = critical, CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer:always
keyUsage = critical, cRLSign, digitalSignature, keyCertSign
subjectAltName = @alt_ca
cRLSign
、digitalSignature
、keyCertSign
V3プロファイル:
[ v3_ica ]
basicConstraints = critical, CA:TRUE, pathlen:1
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer:always
keyUsage = critical, cRLSign, digitalSignature, keyCertSign
subjectAltName = @alt_ica
pathlen:
は、署名できるCA/ICAの数と同じですpathlen:
が0に設定されている場合、他のCA/ICAに署名できませんnonRepudiation
、digitalSignature
、keyEncipherment
、keyAgreement
V3プロファイル:
[ v3_vpn_server ]
basicConstraints = critical, CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer:always
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, keyAgreement
extendedKeyUsage = critical, serverAuth
subjectAltName = @alt_vpn_server
nonRepudiation
、digitalSignature
、keyEncipherment
V3プロファイル:
[ v3_vpn_client ]
basicConstraints = critical, CA:FALSE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer:always
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage = critical, clientAuth
subjectAltName = @alt_vpn_client
keyCertSign
cRLSign
digitalSignature
nonRepudiation
keyEncipherment
dataEncipherment
keyAgreement
encipherOnly
keyAgreement
decipherOnly
keyAgreement
id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }
ビット文字列は16進数です
KeyUsage ::= BIT STRING {
digitalSignature (0),
nonRepudiation (1),
keyEncipherment (2),
dataEncipherment (3),
keyAgreement (4),
keyCertSign (5),
cRLSign (6),
encipherOnly (7),
decipherOnly (8)
}
serverAuth
nscertype
オプション(nsinnscertype
NetScape [ブラウザ]の略)digitalSignature
、keyEncipherment
またはkeyAgreement
clientAuth
digitalSignature
および/またはkeyAgreement
codeSigning
digitalSignature
、nonRepudiation
、および/またはkeyEncipherment
またはkeyAgreement
emailProtection
digitalSignature
、keyEncipherment
またはkeyAgreement
timeStamping
digitalSignature
、nonRepudiation
OCSPSigning
digitalSignature
、nonRepudiation
msCodeInd
digitalSignature
、keyEncipherment
またはkeyAgreement
msCodeCom
digitalSignature
、keyEncipherment
またはkeyAgreement
mcCTLSign
digitalSignature
、nonRepudiation
msEFS
digitalSignature
、keyEncipherment
またはkeyAgreement
ipsecEndSystem
、ipsecTunnel
、&ipsecUser
ipsecIKE
clientAuth
はIPSec VPNクライアント証明書で利用できますanyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 }
id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 }
digitalSignature
、keyEncipherment
またはkeyAgreement
id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 }
digitalSignature
および/またはkeyAgreement
id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 }
digitalSignature
id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 }
digitalSignature
、nonRepudiation
、および/またはkeyEncipherment
またはkeyAgreement
id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 }
digitalSignature
および/またはnonRepudiation
id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 }
digitalSignature
および/またはnonRepudiation