2012-03-26 8 views
0

jersey/springでリクエストが発生した場合、pki証明書を取得したいと考えています。私がやってみました:Jersey/Springでpki証明書を取得するには?

@GET 
@Path("/testCert") 
@Produces("text/plain") 
public String testCert(@Context HttpServletRequest request) 
{ 
    X509Certificate[] certs = (X509Certificate[]) request 
     .getAttribute("javax.servlet.request.X509Certificate"); 
    return "Running... \n"; 
} 

をしかし、それは、ブラウザの外に私の証明書をつかむなかった、と私がしようとする他に何かわかりません。

答えて

3

ブラウザは、サーバーから要求されない限り、クライアント証明書を送信しません。通常、クライアント証明書を要求するには、既定のサーバー構成を変更する必要があります。たとえば、Tomcatでは、HTTPSリスナーを定義するConnector要素に属性clientAuth=trueを追加する必要があります。 clientAuth=want *を使用してクライアント証明書を要求することもできますが、依然として認証されていない接続を許可します。

サーバーがクライアント証明書を要求するように設定されていてまだ送信されていない場合は、他の証明書を信頼するようにブラウザまたはサーバーを設定する必要があります。これは、自己署名証明書を使用している場合に特に関係します。クライアント証明書をブラウザのトラストストアにインポートすることなくは機能しません。

Tomcat SSL How-toは、追加情報の出発点です。そのうちのいくつかはTomcat固有のものではありません。別のサーバーを使用している場合は、明らかに構成オプションのための資料を捜す必要があります。

その他すべてが失敗した場合は、コマンドラインで-Djavax.net.debug=sslを渡すと、SSLレイヤで何が起こっているのかを把握できます。

* 旧バージョンのTomcatでは、この動作を呼び出すためにoptionalが使用されています。正しいプロパティを調べるには、特定のTomcatバージョンのドキュメントを参照してください。

+0

私はEclipseからtomcatサーバーを実行していますが、どのように属性を追加できますか? – Grammin

+0

WTPでEclipse 3.6を使用しているため、UIで設定するオプションが表示されないため、server.xmlファイルを手動で変更する必要があります。これは、パッケージエクスプローラの "Servers"プロジェクトの下にあるサーバーのフォルダアイコンを展開することで実行できます。 – Alex

関連する問題