【问题标题】:javax.servlet.request.X509Certificate issue with returns null valuejavax.servlet.request.X509Certificate 问题,返回空值
【发布时间】:2013-05-04 11:53:05
【问题描述】:

当我尝试从我的 Eclipse 运行以下代码时,我总是将返回值设为 null:

    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>

非常感谢任何帮助!

谢谢!

【问题讨论】:

    标签: tomcat pom.xml x509certificate web.xml


    【解决方案1】:

    默认情况下,客户端身份验证为 false。你应该可以使用这个属性来实现它:

    maven.tomcat.https.clientAuth
    

    您可以找到更多here

    请注意,此属性仅在插件的 2.1 版本中可用。

    【讨论】:

    • 抱歉回复晚了。我能够使用您提供的链接将 clientAuth 设置为 true。但是,现在我收到“SSL 对等方无法验证您的证书”错误。
    • 您可能需要设置一个信任密钥库,以便服务器/客户端知道要信任哪些证书。
    • 是的!包括信任密钥库就可以了。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2020-07-21
    • 2022-06-29
    • 1970-01-01
    相关资源
    最近更新 更多