web-dev-qa-db-ja.com

OpenSSLの基本的な制約

Planning for PKI 」という本を読んでいて、エンドエンティティ証明書を作成したいところまで来ました。ただし、証明書内に拡張エラーがあるというエラーメッセージが表示されます。この問題を解決するために、基本的な制約の拡張をどのように変更できるかを詳しく説明するように先生から指示を受けました。

この本は、エンドエンティティ証明書で基本制約拡張を使用しないことを推奨しています。ただし、単純に削除すると、デフォルトの拡張子 "CA:TRUE "が挿入されています。

だから私の質問は:

  1. この自動挿入を上書きする方法はありますか、それとも本を誤解しましたか?
  2. 私が間違っている可能性があることについてのアイデアはありますか?

以下は、証明書の作成に使用している拡張機能です。

[ server_ext ]
basicConstraints        = critical,CA:false
nsCertType              = server
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid,issuer:always
keyUsage                = critical,digitalSignature,keyEncipherment
extendedKeyUsage        = serverAuth
5
MPol

拡張機能から欠落していたときに、基本制約を含むデフォルトの機能を上書きすることができました。それは、openssl.cnfファイルのcsrおよびcopy extensions属性に関係していました。

1
MPol

OpenSSLのmanページが何らかの助けになるかもしれないと思います:

BasicConstraints拡張が存在しない場合、証明書は「可能なCA」であると見なされ、他の拡張は証明書の使用目的に従ってチェックされます。証明書は実際にはCAと見なされるべきではないため、この場合は警告が表示されます。ただし、壊れたソフトウェアを回避するためにCAになることは許可されています。

つまり、KeyUsage/ExtendedKeyUsageが推測に使用されます(そう思われます)。

https://www.openssl.org/docs/manmaster/man1/x509.html 、証明書拡張セクションから取得.

これは(私にとって)opensslクックブックが言うこととは異なるようです( https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html ):

基本制約拡張は、証明書をCAに属するものとしてマークするために使用され、他の証明書に署名できるようにします。非CA証明書では、この拡張が省略されるか、CAの値がFALSEに設定されます。この拡張は重要です。つまり、ソフトウェアを使用するすべての証明書がその意味を理解する必要があります。

X509v3_config( https://www.openssl.org/docs/manmaster/man5/x509v3_config.html -標準の拡張機能のセクションを参照)のmanページを確認すると、構文に問題がある可能性があります。

彼らは例として以下を提供します:

basicConstraints=CA:TRUE

basicConstraints=CA:FALSE

basicConstraints=critical,CA:TRUE, pathlen:0

これらは、同様の結果を達成するためのもう1つの方法を提供します。

basicConstraints=critical,@bs_section

[bs_section]

CA=true
pathlen=1

私はあなたの設定を読んで修正するだけです:

basicConstraints=CA:FALSE

代わりに:

basicConstraints = critical,CA:false

このように、プロファイルは明示的であり、他の場所に適用されている他の(おそらく反対の)構成をオーバーライドする必要があります。

1