1. ホーム

[解決済み】.cer証明書をjava keystoreにインポートする方法は?

2022-04-02 20:55:16

質問

Javaウェブサービスクライアントの開発中に、ある問題にぶつかりました。ウェブサービスの認証には、クライアント証明書、ユーザー名、パスワードを使用します。ウェブサービスの背後にある会社から受け取ったクライアント証明書は、以下の場所にあります。 .cer 形式を使用します。テキストエディタで検査すると、以下のような内容になっています。

-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----

このファイルをInternet Explorerで証明書としてインポートし(パスワードを入力する必要はありません!)、それを使ってウェブサービスで認証することができます。

まず最初と最後の行を削除し、unixの改行に変換してbase64-decodeを実行することで、この証明書をkeystoreにインポートすることができました。出来上がったファイルは鍵ストアにインポートすることができます ( keytool コマンドを実行します)。キーストアのエントリーをリストアップすると、このエントリーは以下のようなタイプになっています。 trustedCertEntry . このエントリータイプのため(?)、この証明書を使用してウェブサービスと認証することができません。提供された証明書は、認証に使用されているパブリック証明書だと思い始めています...。

私が発見した回避策は、IE で証明書をインポートし、それを .pfx ファイルを作成します。このファイルはキーストアとして読み込むことができ、ウェブサービスでの認証に使用することができます。しかし、クライアントが新しい証明書を受け取るたびに、これらの手順を実行することを期待することはできません。そこで .cer ファイルを直接Javaに取り込むことができます。何かアイデアはありますか?

追加情報:ウェブサービスの会社は、証明書は、後で証明書をインポートするPCとユーザーから(IE & ウェブサイトを使用して)要求されるべきだと教えてくれました。

解決方法は?

  • 認証したい場合は、秘密鍵が必要です - 他に方法はありません。
  • 証明書とは、公開鍵に追加プロパティ(会社名、国名など)を加えたもので、添付プロパティが真であることを保証する何らかの認証局によって署名されたものです。
  • .CER ファイルは証明書であり、秘密鍵は持っていません。秘密鍵は .PFX keystore ファイルです。 本当に認証されるなら、すでに秘密鍵をインポートしていたことになります。
  • 通常は .CER で問題なく証明書を発行できます。

    keytool -importcert -file certificate.cer -keystore keystore.jks -alias "Alias"