Java中如何从rest请求中检索客户端证书
我正在使用Java中如何从rest请求中检索客户端证书,java,http,jersey,ssl-certificate,jetty,Java,Http,Jersey,Ssl Certificate,Jetty,我正在使用Jersey作为Java中的REST服务器和Jetty作为web服务器。我有自签名证书。我想从收到的HTTP请求中获取客户端证书详细信息。如何从HttpServletRequest获取信息 一种方法: X509Certificate certs[] = (X509Certificate[])httpRequest.getAttribute("javax.servlet.request.X509Certificate"); 是这样吗?这就导致了例外, Error [Ljava.lang
Jersey
作为Java
中的REST
服务器和Jetty
作为web服务器。我有自签名
证书。我想从收到的HTTP请求中获取客户端证书详细信息。如何从HttpServletRequest
获取信息
一种方法:
X509Certificate certs[] = (X509Certificate[])httpRequest.getAttribute("javax.servlet.request.X509Certificate");
是这样吗?这就导致了例外,
Error [Ljava.lang.Object; cannot be cast to [Ljava.security.cert.X509Certificate
我应该包括任何附加的JAR
?或者是否有任何方法获取客户端证书详细信息
我也遇到过,
httpRequest.getHeader("ssl_client_cert");
这两种方法似乎对我都不管用。如何获取详细信息?首先,确保处理SSL/TLS的ServerConnector。 接下来,该ServerConnector应该有一个SslConnectionFactory,其中包含一个已配置的HttpConfiguration对象。 该HttpConfiguration对象应添加SecureRequestCustomizer 用嵌入式码头的说法,它看起来像这样
//SSL上下文工厂
SslContextFactory SslContextFactory=新的SslContextFactory();
setkeystrepath(“/path/to/keystore”);
setKeyStorePassword(“密码”);
sslContextFactory.setKeyManagerPassword(“机密”);
setTrustStorePath(“/path/to/keystore”);
setTrustStorePassword(“密码”);
//SSL HTTP配置
HttpConfiguration https_config=新的HttpConfiguration(http_config);
https_config.addCustomizer(新的SecureRequestCustomizer());//如果不将其强制转换为X509Certificate
数组,而是将其保留为对象数组,会发生什么?该对象数组是否包含X509Certificate
?您所做的工作肯定适用于Tomcat。泽西岛/码头可能有所不同。需要检查的一件事是证书类是否在旧包(javax.security.cert.X509Certificate)中。请注意“javax”。
$ cd /path/to/my-jetty-base
$ java -jar /path/to/jetty-home/start.jar --list-config
Java Environment:
-----------------
java.home = /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre (null)
java.vm.vendor = Oracle Corporation (null)
java.vm.version = 25.202-b08 (null)
java.vm.name = Java HotSpot(TM) 64-Bit Server VM (null)
java.vm.info = mixed mode (null)
java.runtime.name = Java(TM) SE Runtime Environment (null)
java.runtime.version = 1.8.0_202-b08 (null)
java.io.tmpdir = /var/folders/w5/mmnzpk0n369dntp4nszlc8h40000gn/T/ (null)
user.dir = /path/to/my-jetty-base (null)
user.language = en (null)
user.country = US (null)
Jetty Environment:
-----------------
jetty.version = 9.4.15.v20190215
jetty.tag.version = master
jetty.home = /path/to/jetty-home
jetty.base = /path/to/my-jetty-base
...(snip lots of output)...
Jetty Active XMLs:
------------------
${jetty.home}/etc/jetty-threadpool.xml
${jetty.home}/etc/jetty.xml
${jetty.home}/etc/jetty-webapp.xml
${jetty.home}/etc/jetty-plus.xml
${jetty.home}/etc/jetty-annotations.xml
${jetty.home}/etc/jetty-deploy.xml
${jetty.home}/etc/jetty-http.xml
${jetty.home}/etc/jetty-ssl.xml <-- THIS LINE
${jetty.home}/etc/jetty-ssl-context.xml
${jetty.home}/etc/jetty-https.xml
${jetty.home}/etc/jetty-jaas.xml
${jetty.home}/etc/jetty-rewrite.xml
${jetty.base}/etc/demo-rewrite-rules.xml
${jetty.base}/etc/test-realm.xml