引用:
openssl拡張の種類を示すページが見つからないのはなぜですか? !
相互認証を行っていますが、その過程で中間証明書を挿入しようとすると、生成され署名された中間証明書がオプションのために自己署名されていることが確認CA
されます-sign-key
。
マニュアルページを読んで関連内容を見つけました。
基本的な制約。 これは、証明書が CA 証明書であるかどうかを示す複数値拡張です。たとえば、
basicConstraints=CA:TRUE basicConstraints=CA:FALSE
主な使用法: キー使用は、許可されたキー使用の名前のリストで構成される複数値拡張です。サポートされる名前は次のとおりです。
digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign, encipherOnly and decipherOnly.
例:
keyUsage=digitalSignature, nonRepudiation keyUsage=critical, keyCertSign
critical
ブラウザ証明書の表示に重要でない項目が表示されます。私の証明書にはこれらのフィールドはありません。また、拡張子がなければ、証明書がルート証明書と自己署名証明書として扱われるという意味も読みました。
4種類の証明書を作成したいと思います。
rootca > serverca > サーバー ca が署名したサーバー crt && サーバー ca が署名したクライアント crt
ドキュメントでは、私は以下を見つけました:
v3_ca、v3_ユーザー、v3_ca
これは私の質問に対する答えですか?
私が生成したいコマンド中カルシウムそして、鍵で署名することは次のrootca
とおりです。
openssl genrsa -out $keyfile $keysize;
openssl req -new -key $keyfile -out $reqfile -passin pass:$pw \
-subj "/C=$country/ST=$state/L=$location/O=$org/CN=$name" 2>&1;
openssl x509 -req -days $days -in $reqfile -out $certfile \
-signkey $cakeyfile 2>&1;
添付:
私はこれらすべてをbashスクリプトで実行するので、設定ファイルを使用しません。
誰かが私に拡張機能を説明できるのか、bashから取得するのではなくパラメータとして渡すことができるのかと思います(bashスクリプトを開き、bashを呼び出すたびに編集する必要があるため)
答え1
簡単に言うと: basicConstraints=CA:TRUE/FALSE
証明書が CA 証明書であるかどうかを示します。当局だけが証明書を発行できます。
keyUsage プロパティは、証明書に許可される操作を表します。たとえば、電子メール署名用にのみ証明書を発行できます。 Webサーバーがそのような証明書を使用している場合(クライアントでサーバーを識別するため)、その結果、証明書は有効と見なされません。意図された用途は電子メール署名用であり、ウェブサイト識別用ではないからです。 (もちろん、別のCNがあるでしょうが、そうでない場合は、私が説明したように動作します)。
問題を解決するには:
rootca - 一部の自己署名証明書
serverca - rootca が署名した CA 証明書 (basicConstraints=CA:TRUE)
servercrt、clientcrt - servercaが署名した一般CSR
証明機関として一部の証明書に署名するときは、次のものを使用する必要があります。 、、、、...openssl ca -CA authority.crt -CAkey authority.key ...
などの他のオプション-config
-set_serial
-days
実際、設定ファイルなしでCAを使用したことがないので、他の人の質問に答えることができます。コマンドラインにすべてのパラメータを入力することが可能でなければならないと思います。
ただし、より多くのプロファイル(権限ごとに1つずつ)を作成し、それをパラメータに提供できます-config
。この方法の利点は、発行されたすべてのcrtのアーカイブを取得でき、シリアル番号が自動的に増加することです。