2013-05-09 35 views
1

當我嘗試從我的Eclipse運行下面的代碼,我總是得到返回一個空值:與返回空值javax.servlet.request.X509Certificate問題

X509Certificate cert[] = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate"); 
System.out.println("cert: " + cert[0]); //always returns null 

有人能幫助我這個問題?我讀過某處說我必須將客戶端身份驗證值設置爲true,但我該怎麼做?我使用pom.xml和web.xml(附後)

web.xml: 
<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>HTTPS<web-resource-name> 
    <url-pattern>/*<url-pattern> 
    </web-resource-collection> 
    <user-data-constraint> 
    <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 
<login-config> 
    <auth-method>CLIENT-CERT</auth-method> 
</login-config> 

pom.xml: 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>tomcat-maven-plugin</artifactId> 
<configuration> 
    <httpsPort>8443</httpsPort> 
    <keystoreFile>${basedir}/certs/keystore.jks</keystoreFile> 
    <keystorePass>changeit</keystorePass> 
</configuration> 

任何幫助真的很感激!

謝謝!

回答

1

默認情況下,客戶端身份驗證爲false。您應該能夠使用這個屬性,使其真正:

maven.tomcat.https.clientAuth 

你可以找到更多here

請注意,此屬性僅在插件的2.1版本中可用。

+0

對不起,遲到的迴應。我能夠使用您提供的鏈接將clientAuth設置爲true。但是,現在我得到了「SSL對等無法驗證您的證書」的錯誤。 – messron 2013-05-13 18:52:47

+0

您可能需要設置一個信任密鑰庫,以便服務器/客戶端知道要信任哪些證書。 – gtrig 2013-05-13 19:59:44

+0

是的!包括信任密鑰庫做了伎倆..感謝您的幫助! – messron 2013-05-14 13:31:10