web-dev-qa-db-ja.com

証明書要求の解析エラー:x509:Let's Encryptのサポートされていない楕円曲線

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
2
jww

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のものではないランダムな曲線であるため、rkの名前の違いです)

3
Patrick Mevzek