Spring Boot - 从 HTTP 请求中读取 x509 客户端证书

Mis*_*bon 2 java spring certificate x509

如何从客户端接收 x509 证书?我正在使用 Java 的 Spring-Boot-Framework 和嵌入式 tomcat。对于原型设计,我使用 Java SE 进行了配置:

HttpsExchange httpsExchange = (HttpsExchange) httpReq;

name = httpsExchange.getSSLSession().getPeerPrincipal().getName();

一个用户给了我一个参考来做这里(在下面)

@RequestMapping(value = "/grab")
public void grabCert(HttpServletRequest servletRequest) {
    Certificate[] certs = 
            (Certificate[]) servletRequest.getAttribute("javax.servlet.request.X509Certificate");
}
Run Code Online (Sandbox Code Playgroud)

但是我拿不到证书!也许是因为我使用的是 tomcat,它正在处理所有 SSL 连接。所以没有证书接收我的申请。我必须做什么才能获得客户证书?客户端证书用于获取 https 连接。我需要有关证书主题的一些信息。谢谢。

小智 5

你必须从HttpServletRequest.

您可以查看这个问题的答案:如何将证书放入X509过滤器(Spring Security)?

不,你不能那样做。您需要从 HttpServletRequest 中获取它:

X509Certificate[] certs = (X509Certificate[])HttpServletRequest.getAttribute("javax.servlet.request.X509Certificate");
Run Code Online (Sandbox Code Playgroud)

这是我试图向您指出的帖子,由甘道夫撰写。

这是最初的问题