9

openssl コマンドを使用して、楕円曲線 secp384r1 とアルゴリズム sha384 で署名されたハッシュで CSR を作成しています。

openssl ecparam -out ec_client_key.pem -name secp384r1 -genkey

openssl req -new -key ec_client_key.pem -out ec_clientReq.pem

次に、次のコマンドを使用して CSR を読み取り可能な形式で表示します。

openssl req -in ec_clientReq.pem -noout -text

CSR の署名部分では、次のようになります。

Signature Algorithm: ecdsa-with-SHA1
    30:64:02:30:06:a1:f2:5e:1b:34:18:b9:f3:7c:e9:52:c8:78:
    99:90:63:d2:1e:d2:f5:7a:25:f3:d6:4d:6d:90:d0:bf:25:45:
    15:ad:aa:17:34:ad:1a:b9:1e:67:2b:cf:d7:a6:9b:e5:02:30:
    31:fe:76:37:4b:11:3a:e7:2d:63:52:bb:18:2f:8e:43:a7:bb:
    65:74:38:a4:92:38:9d:eb:ec:22:8f:77:f3:e4:5f:47:2d:f8:
    2a:9b:e1:2c:ba:a7:b0:e6:c2:54:8d:0e

「ecdsa-with-SHA1」ではなく「ecdsa-with-SHA384」の署名アルゴリズムを取得するにはどうすればよいですか? このプロセスで何か不足していますか?2番目のコマンドで -sha384 を使用しようとしました

openssl req -new -key ec_client_key.pem -out ec_clientReq.pem -sha384

しかし、署名アルゴリズムに関しては同じ結果が得られました

Signature Algorithm: ecdsa-with-SHA1
    30:65:02:30:4e:b4:b6:5f:3a:fc:b7:28:e5:4b:f0:3d:9a:ea:
    4a:ba:ce:a4:f1:a6:e8:cd:15:19:23:a6:81:3f:24:01:d7:81:
    3c:9d:9a:4c:cd:4b:4a:12:6d:69:48:ec:7e:73:7d:73:02:31:
    00:d7:a5:63:9b:21:b2:95:ce:7f:13:3f:c5:1a:ac:99:01:ff:
    ba:9c:59:93:d5:ee:97:03:b5:9e:c1:7d:03:f8:72:90:65:b5:
    08:7c:79:ae:ea:4f:6e:b0:2b:55:1a:11:a5

別の質問は、署名の形式に関するものです。上記の例では、1 つが 102 バイト長で、2 つ目が 103 バイト長です。最初のバイトは、タイプ、長さを含むヘッダーであり、パディングなどの他のものである可能性があるようです。しかし、私は正確な定義を見つけることができません。誰かがこれに光を当てることができますか?ありがとう

4

3 に答える 3

5

今回は(0.9.8nではなく)最後のopensslバージョン1.0.1eで再試行しました。

openssl ecparam -out ec_client_key.pem -name secp384r1 -gen

openssl req -config openssl.cnf -new -key ec_client_key.pem -out ec_clientReq.pem -sha384

openssl req -in ec_clientReq.pem -noout -text

これで、期待される結果が得られました。

署名アルゴリズム: ecdsa-with-SHA384

バージョン 0.9.8n は sha384 をサポートしていないようです。

CHANGES ファイルからのこの抜粋は、これを確認しているようです。

1.0.0h と 1.0.1 の間の変更点 [2012 年 3 月 14 日] : ... *) RFC5289 から HMAC ECC 暗号スイートを追加。SHA3​​84 PRF サポートを含めます。RFC5289 で要求されているように、TLS のバージョンが 1.2 より前の場合、これらの暗号スイートは使用できません。【スティーブ・ヘンソン】

助けてくれてありがとう。

于 2013-06-03T14:28:34.330 に答える
2

-SHA384 オプションで行ったのと同じコマンドを使用すると、結果の CSR に「署名アルゴリズム: ecdsa-with-SHA384」が表示されます。

次のコマンドを入力して、サポートされているダイジェストのリストを表示します。

openssl list-message-digest-algorithms

そのリストに SHA384 が表示されることを願っています。

2 番目の質問については、フォーマットは ASN.1 です。"30" は、シーケンスが続くことを示します (この場合、2 つの整数のシーケンスです)。「65」はシーケンスのオクテット数です。「02」は整数を表し、30 はその整数のオクテット数です。0x30 (10 進数で 48) オクテットをスキップすると、「02」と「31」でマークされた 2 番目の整数になります。したがって、最初の整数の長さは 30 で、2 番目の整数は 31 です。各整数に 2 オクテットを追加すると、シーケンスの長さである 65 が得られます。このページでは、ASN.1 について詳しく説明します。

この値が 2 つの整数のシーケンスである限り、それは理にかなっています。ECDSA 署名は 2 つの整数で構成されます。詳細については、 RFC6605セクション 4 を参照してください。2 つの整数の計算方法を説明するwiki ページもあります。

于 2013-05-30T00:05:53.827 に答える