2012-03-26 74 views
0

我希望在球衣/春季發出請求時獲取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中,您需要將屬性clientAuth=true添加到定義HTTPS偵聽器的Connector元素。您還可以使用clientAuth=want *來請求客戶端證書,但仍允許未經身份驗證的連接。

如果您的服務器設置爲請求客戶端證書,但仍未發送,則可能需要設置瀏覽器和/或服務器以信任其他證書。如果您使用自簽名證書,這尤其相關 - 如果不將客戶端證書導入瀏覽器信任庫,肯定無法正常工作。

Tomcat SSL How-to是附加信息的一個很好的起點,其中一些信息不是特定於Tomcat的;如果您使用的是其他服務器,則顯然需要搜索其文檔以獲取配置選項。

如果一切都失敗了,您可以通過命令行上的-Djavax.net.debug=ssl來了解SSL層發生了什麼。

* 較舊的Tomcat版本使用optional來調用此行爲。請查閱您的特定Tomcat版本的文檔以確定正確的屬性。

+0

我正在eclipse上運行我的tomcat服務器,如何在那裏添加屬性? – Grammin 2012-03-26 16:18:13

+0

使用Eclipse 3.6與WTP,我沒有看到通過UI設置它的選項,因此您必須手動修改server.xml文件。這可以通過在Package Explorer中的「Servers」項目下展開服務器的文件夾圖標來完成。 – Alex 2012-03-26 17:40:53