Let's Encryptのsecp256を使用してECベースのX509証明書を取得しようとしています。 Let's Encryptは証明書を発行する代わりにエラーを返します。
$ letsencrypt --manual --csr ~/cryptopp-com.req.pem.ec auth
...
Press Enter to Continue
Waiting for verification...
Cleaning up challenges
An unexpected error occurred:
The request message was malformed :: Error parsing certificate request: x509: unsupported elliptic curve
証明書署名要求は、私にとっては正しい形に見えます(以下を参照)。 secp256k1とecdsaはどちらもよく知られている名前です(ただし、secp256k1はそのANSI名prime256v1で呼ばれることもあります)。 secp256k1は、インターネットで使用される最も人気のある曲線でもあります。
RSAキーを使用する場合も同じプロセスが機能するため、問題はプロセスにあるとは思わない。
リクエストで使用するカーブ名は何ですか?
# openssl req -in cryptopp-com.req.pem.ec -text -noout
Certificate Request:
Data:
Version: 0 (0x0)
Subject: O=Crypto++ Project/[email protected]
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:22:61:22:38:d9:d4:05:a4:48:e6:42:c4:a8:2e:
9d:f0:59:4d:7c:4b:90:c0:20:d1:12:ec:57:21:47:
5f:30:dc:e5:c5:f7:c9:0f:a5:88:7b:bc:a1:1f:46:
33:7b:3c:21:b8:f9:11:42:9b:08:39:0d:e1:d1:bf:
f0:6e:66:4c:fb
ASN1 OID: secp256k1
Attributes:
Requested Extensions:
X509v3 Subject Key Identifier:
A4:DC:43:6C:A8:7C:1C:98:34:9F:AE:BC:8B:F3:C7:47:4E:AE:8C:B4
X509v3 Subject Alternative Name:
DNS:cryptopp.com, DNS:www.cryptopp.com
Netscape Comment:
OpenSSL generated CSR
Signature Algorithm: ecdsa-with-SHA256
30:45:02:21:00:a7:ef:46:7d:ce:16:60:30:af:63:43:83:6f:
63:02:21:58:50:c5:37:92:9e:46:d6:ac:c6:0d:57:7a:59:01:
db:02:20:3c:5c:cb:36:57:11:c7:20:7a:a0:37:53:7a:da:62:
9d:3e:4e:74:71:88:e0:1c:be:e1:fa:fd:c6:69:4c:30:c8
https://letsencrypt.org/docs/integration-guide/ ごと:
Let's Encryptは、2048〜4096ビット長のRSAキーと、P-256およびP-384 ECDSAキーを受け入れます。これは、アカウントキーと証明書キーの両方に当てはまります。アカウントキーを証明書キーとして再利用することはできません。
したがって、ECベースの証明書を使用できますが、現時点ではまだRSAベースのCA証明書によって署名されていることに注意してください。これは2019年に変更される予定です。
https://thecustomizewindows.com/2016/11/how-to-generate-lets-encrypt-ecc-ssl-ecdsa-certificate/ では、secp384r1
という名前の鍵アルゴリズムを使用した例を見ることができます
https://scotthelme.co.uk/ecdsa-certificates/ でわかるように、使用できる他のキーアルゴリズムはsecp256r1
です。
secp256k1
を使用したと言いますが、これは別の曲線です。 https://crypto.stackexchange.com/questions/18965/is-secp256r1-more-secure-than-secp256k1 を参照してください。
主な違いは、secp256k1はKoblitz曲線ですが、secp256r1はそうではないことです。 Koblitz曲線は、他の曲線よりも数ビット弱いことが知られています
(secp256r1
は、特定のKoblitzのものではないランダムな曲線であるため、r
とk
の名前の違いです)