如何在 HTTP 请求中接收客户端证书?
How to receive client certificate in an HTTP request?
我已生成自签名 SSL 证书并提供给客户。每次,客户端发送一个REST请求,我在服务器上做客户端证书认证。我需要在 java 代码中获取证书数据。我怎么做?我用过球衣框架。
您可以使用@Context 注解来提取HttpServletRequest。
@POST
@Path("/getHelloWorld")
@Consumes(MediaType.APPLICATION_JSON)
public String helloWorld(@Context HttpServletRequest httpRequest) {
X509Certificate[] certs = (X509Certificate[]) httpRequest.getAttribute("javax.servlet.request.X509Certificate");
if (null != certs && certs.length > 0) {
return <<YOUR CODE HERE>>;
}
return <<YOUR CODE HERE>>;
}
假设您已经在您的网络服务器上启用了客户端身份验证。对于 tomcat 服务器
< Connector SSLEnabled="true" acceptCount="100" clientAuth="true"
disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="8443" keystoreFile="conf/keystore.jks" keystorePass="changeit"
truststoreFile="conf/truststore.ts" truststorePass="changeit"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />
我已生成自签名 SSL 证书并提供给客户。每次,客户端发送一个REST请求,我在服务器上做客户端证书认证。我需要在 java 代码中获取证书数据。我怎么做?我用过球衣框架。
您可以使用@Context 注解来提取HttpServletRequest。
@POST
@Path("/getHelloWorld")
@Consumes(MediaType.APPLICATION_JSON)
public String helloWorld(@Context HttpServletRequest httpRequest) {
X509Certificate[] certs = (X509Certificate[]) httpRequest.getAttribute("javax.servlet.request.X509Certificate");
if (null != certs && certs.length > 0) {
return <<YOUR CODE HERE>>;
}
return <<YOUR CODE HERE>>;
}
假设您已经在您的网络服务器上启用了客户端身份验证。对于 tomcat 服务器
< Connector SSLEnabled="true" acceptCount="100" clientAuth="true"
disableUploadTimeout="true" enableLookups="false" maxThreads="25"
port="8443" keystoreFile="conf/keystore.jks" keystorePass="changeit"
truststoreFile="conf/truststore.ts" truststorePass="changeit"
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
secure="true" sslProtocol="TLS" />