keytool エラー: java.security.cert.CertificateParsingException: 署名されたフィールドが無効です

keytool エラー: java.security.cert.CertificateParsingException: 署名されたフィールドが無効です

Mongo Atlas から取得した X509 証明書 pem ファイルがあります。次のようにしてキーストアにインポートしようとしています。

keytool -importcert -file X509-cert.pem -alias myalias -keystore mykeystore.p12 -storetype PKCS12

しかし、次のエラーが発生します:

keytool error: java.security.cert.CertificateParsingException: signed fields invalid

私の pem ファイルには証明書と秘密鍵が含まれています:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

そこで、cert.pem と key.pem に分け、追加してみました。

$ keytool -importcert -file cert.pem -alias myalias -keystore mykeystore.p12 -storetype PKCS12
Enter keystore password:  
keytool error: java.lang.Exception: Public keys in reply and keystore don't match
$ keytool -importcert -file key.pem -alias myalias -keystore mykeystore.p12 -storetype PKCS12
Enter keystore password:  
keytool error: java.security.cert.CertificateParsingException: signed fields invalid

証明書については別のエラーが発生しますが、キーについては同じエラーが発生します。いずれにしても、これらのエラーで行き詰まっています。

X509 証明書をキーストアにインポートするにはどうすればよいですか? (私はこれをすべて Kubernetes ポッドで実行しています)

答え1

問題は、エイリアス名がキーストアのエイリアスと同じで競合が発生していたことです。これを修正するには、次のようにします。

keytool -importcert -file X509-cert.pem -alias someOtherAlias -keystore mykeystore.p12 -storetype PKCS12

関連情報