Java Webサービスクライアントの開発中に問題が発生しました。Webサービスの認証は、クライアント証明書、ユーザー名、およびパスワードを使用しています。Webサービスの背後にある会社から受け取ったクライアント証明書は.cer
フォーマットされています。テキストエディターを使用してファイルを検査すると、次の内容が含まれています。
-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----
このファイルを証明書としてInternet Explorerにインポートし(パスワードを入力する必要はありません!)、それを使用してWebサービスで認証できます。
最初に最初と最後の行を削除し、UNIXの改行に変換して、base64-decodeを実行することで、この証明書をキーストアにインポートすることができました。結果のファイルは、(keytool
コマンドを使用して)キーストアにインポートできます。キーストアのエントリを一覧表示すると、このエントリのタイプはtrustedCertEntry
です。このエントリタイプ(?)のため、この証明書を使用してWebサービスで認証することはできません。提供された証明書は、認証に使用されている公開証明書であると思い始めています...
私が見つけた回避策は、証明書をIEにインポートし、.pfx
ファイルとしてエクスポートすることです。このファイルはキーストアとしてロードでき、Webサービスでの認証に使用できます。ただし、クライアントが新しい証明書を受け取るたびにこれらの手順を実行することは期待できません。そのため、.cer
ファイルを直接Java にロードしたいと思います。何かご意見は?
追加情報:Webサービスの背後にある会社から、後で証明書をインポートするPCとユーザーから(IEとWebサイトを使用して)証明書を要求する必要があると言われました。