1

SSL クライアント証明書を介してユーザーを認証するように構成された (自分の管理下にない) Web サービスに接続しようとしています。クライアント証明書と関連する秘密鍵を含む PKCS12 形式の有効な証明書があります。証明書は、Web サービス プロバイダーが承認した CA によって発行されます。

証明書をインストールし、さまざまなブラウザーで制限された領域にアクセスしようとすると、次の結果が得られます。

  • IE6 - 正常に動作し、WSDL を取得できます

  • IE7 - 証明書を求めるプロンプトが表示されますが、サーバーからの 403.7 で失敗します

  • Firefox3 - 確認するように設定しましたが、プロンプトが表示されず、403.7 で失敗します

  • Safari 4 - 証明書はキーチェーンにインストールされていますが、プロンプトが表示されず、403.7

また、プログラム (Java) で Web サービスにアクセスしようとすると、同じ 403.7 エラー コードで失敗します。

これが IE6 では機能するのに、他のブラウザーでは機能しないのは奇妙です。完全な CA 証明書チェーンを PKCS12 ファイルに含める必要がありますか?

どんな助けでも大歓迎です。

4

2 に答える 2

2

これは本当にうまくいきます!-inkey および -in オプションに混乱している場合、これらは p12 ファイルの秘密鍵と証明書です。次のコマンドを使用して、p12 ファイルを pem 形式に変換できます。

openssl pkcs12 -in file.p12 -clcerts -out file.pem

上記のコマンドを「-in file.pem」のみで使用します。

また、ルート CA 証明書を信頼できる証明書ストアにインポートすることもできます。その方法については、http: //gagravarr.org/writing/openssl-certs/others.shtml#ca-opensslを参照してください。証明書を手動でコピーする必要はありません。証明書をインストールした後、「-CAfile chain.pem」なしで上記のコマンドを使用します。

于 2011-07-12T14:23:01.903 に答える
1

わかりました、これでうまくいきました。答えはイエスです。すべての中間 CA 証明書を PKCS12 ファイルに含める必要がありました。ファイル「chain.pem」内のすべての中間 CA 証明書とルート CA 証明書を連結し、次のコマンドを実行しました。

openssl pkcs12 -export -chain -CAfile chain.pem -in cert.pem -inkey key.pem -out cert.p12
于 2009-10-08T00:07:48.383 に答える