証明書に署名するにはなぜ `-CAcreateserial` 引数が必要なのでしょうか? 質問する

証明書に署名するにはなぜ `-CAcreateserial` 引数が必要なのでしょうか? 質問する

例えば、

openssl x509 \
    -req -sha256 \
    -days "365" \
    -CAcreateserial \
    -CA "ca.crt" -CAkey "ca.key" -passin "pass:abcd" \
    -in "csr.csr" -extfile "ext.ext" \
    -out "c.crt";

ca.srlまた、署名された証明書のシリアルを含むファイルも作成します。

引数が存在しない場合は上記は機能せず-CAcreateserial、エラーを出力します。

/test/ca.srl: No such file or directory
140413509251520:error:06067099:digital envelope routines:EVP_PKEY_copy_parameters:different parameters:../crypto/evp/p_lib.c:93:
140413509251520:error:02001002:system library:fopen:No such file or directory:../crypto/bio/bss_file.c:72:fopen('/test/ca.srl','r')
140413509251520:error:2006D080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:79:

その引数は、とにかく以下のコマンドで取得できるシリアル番号付きのファイルを出力するために使用されているのではないですか?

openssl x509 \
    -in "c.crt" \
    -noout \
    -serial;

ポイントは何ですか? 必要な場合にファイルを内部で作成せず、ストレージに保存するのはなぜですか?

ベストアンサー1

2 番目のコマンドのオプション-serialは、既存の証明書のシリアル番号を出力するだけです。ただし、証明書に署名する場合、CA は証明書ごとに一意のシリアル番号を生成する必要があり、それが完了するまでは、-serial出力するシリアル番号はまだありません。

各証明書のシリアル番号は発行者ごとに一意である必要があるため、発行者は以前に使用したシリアル番号を記録し、同じ番号を再利用しないようにする必要があります。OpenSSL では、シリアル番号ファイルを使用してこれを簡単に追跡できます。 を指定すると-CAcreateserial、署名された証明書にシリアル番号が割り当てられ01、次のシリアル番号 ( ) を含むこのシリアル番号ファイルが作成されます。今後の署名操作では、ではなく、そのファイルの名前とともに を02使用する必要があります。OpenSSL は、署名された証明書ごとにそのファイル内の値を増分します。このようにして、1 つの発行者証明書を使用して多数の証明書に署名でき、そのすべてのシリアル番号が一意になります。-CAserial-CAcreateserial

複数の発行者証明書を使用している場合は、証明書ごとに個別のシリアル番号ファイルを使用できます。

このアプローチは機能しますが、本番環境での使用には適していません。厳密に連続的に増加する証明書のシリアル番号を使用することで生じるいくつかの問題

おすすめ記事