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

Spring Boot - Reading x509 client certificate from HTTP request

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

HttpsExchange httpsExchange = (HttpsExchange) httpReq;

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

一位用户在此处(下方)给了我一个参考[​​=13=]

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

但是我无法获得一些证书!可能是因为我正在使用 tomcat,并且它正在处理所有 SSL 连接。这样就没有证书收到我的申请。我必须做什么才能获得客户证书?客户端证书用于获取 https 连接。我需要证书主题的一些信息。谢谢

您必须从 HttpServletRequest 中获取它。

你可以查看这个问题的答案:How to get the certificate into the X509 filter (Spring Security)?:

No you can't get it that way. You need to grab it from the HttpServletRequest:

X509Certificate[] certs = (X509Certificate[])HttpServletRequest.getAttribute("javax.servlet.request.X509Certificate");

这是 post 我想让你看到的,作者是 Gandalf。

这是原来的 question