【问题标题】:How to grab a pki certificate with Jersey / Spring?如何使用 Jersey / Spring 获取 pki 证书?
【发布时间】:2015-10-12 22:09:47
【问题描述】:

当请求发生在球衣/春季时,我想获取 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";
 }

但这并没有从浏览器中获取我的证书,我不知道还能尝试什么。

【问题讨论】:

    标签: java spring jersey x509certificate pki


    【解决方案1】:

    除非服务器请求,否则浏览器不会发送客户端证书,您通常需要修改默认服务器配置以请求客户端证书。例如,在 Tomcat 中,您需要将属性 clientAuth=true 添加到定义 HTTPS 侦听器的 Connector 元素。您也可以使用clientAuth=want* 请求客户端证书,但仍允许未经身份验证的连接。

    如果您已将服务器设置为请求客户端证书但仍未发送,那么您可能需要设置浏览器和/或服务器以信任对方的证书。如果您使用的是自签名证书,这一点尤其重要——如果不将客户端证书导入浏览器信任存储区,那肯定是行不通的。

    Tomcat SSL How-to 是获取其他信息的良好起点,其中一些信息并非特定于 Tomcat;如果您使用的是不同的服务器,您显然需要查找其文档以获取配置选项。

    如果所有其他方法都失败了,您可以在命令行上传递 -Djavax.net.debug=ssl 以深入了解 SSL 层的情况。

    * 较旧的 Tomcat 版本使用 optional 来调用此行为。请查阅特定 Tomcat 版本的文档以确定正确的属性。

    【讨论】:

    • 我在 Eclipse 之外运行我的 tomcat 服务器,如何在其中添加属性?
    • 使用带有 WTP 的 Eclipse 3.6,我没有看到通过 UI 设置它的选项,因此您必须手动修改 server.xml 文件。这可以通过在 Package Explorer 的“Servers”项目下展开您的服务器的文件夹图标来完成。
    猜你喜欢
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多