我正在尝试在Tomcat 7应用上设置相互身份验证。我的server.xml具有以下连接器:
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8443"
enableLookups="true"
acceptCount="100"
connectionTimeout="20000"
useURIValidationHack="false"
disableUploadTimeout="true"
scheme="https"
secure="true"
SSLEnabled="true"
keystoreFile="servercert.jks"
keystorePass="password"
truststoreFile="truststore.jks"
truststorePass="password"
clientAuth="true"
sslProtocol="TLS" />
当我尝试使用与“https:// testserver:8443 / myapp / LoadUser.do”类似的URL来执行struts操作时,浏览器会提示我输入客户端证书。当我提供我的服务器信任的证书时,似乎验证就好了。在服务器端,我希望通过调用request.getUserPrincipal()来获取客户端证书的Common Name,但它只是null。假设getUserPrincipa()应该设置为CN,我是否正确?如果是的话,我做错了什么/错过了什么。如果不是,我如何在服务器端检索CN?
感谢。
答案 0 :(得分:4)
我像个假人一样在错误的地方寻找。我从请求中获得了所有证书信息:
request.getAttribute(org.apache.catalina.Globals.CERTIFICATES_ATTR);