java - 如何使用 Quarkus 以双向 SSL 从 REST 服务中的请求中检索客户端证书

标签 java rest servlets ssl-certificate quarkus

关注 Quarkus Getting Started指导和enabling SSL我想做的下一步是获取客户端证书链。

我想做这样的事情:

    private X509Certificate extractCertificate(HttpServletRequest req) {
        X509Certificate[] certs = (X509Certificate[]) 
        req.getAttribute("javax.servlet.request.X509Certificate");
        if (null != certs && certs.length > 0) {
            return certs[0];
        }
        throw new RuntimeException("No X.509 client certificate found in request");
     }

按照入门指南注入(inject) HttpServletRequest 并不像此 issue 中所述直接进行。

那么如何访问客户端证书链呢?

最佳答案

经过一些研究后,我最终使用类 io.vertx.core.http.HttpServerRequest 得到了以下解决方案

private X509Certificate extractCertificate(HttpServerRequest req) throws SSLPeerUnverifiedException {
    X509Certificate[] certs = req.connection().peerCertificateChain();
    if (null != certs && certs.length > 0) {
        return certs[0];
    }
    throw new RuntimeException("No X.509 client certificate found in request");
}

关于java - 如何使用 Quarkus 以双向 SSL 从 REST 服务中的请求中检索客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60879775/

相关文章:

java - 空检查与可选的 isPresent 检查

java - (初学者)意外的类型错误

java - Apache Flink 错误java.lang.ClassNotFoundException : org. apache.flink.table.sources.TableSource?

python - 如何在 Django Rest Framework 响应中返回原始数据类型(而不是 UUID)

javascript - 获取动态构造的 html 表中的行值

java - 如何检查 HttpServletRequest 的 request.getQueryString() 方法是否容易受到 SSRF 攻击?

java - Spring Web应用程序: Shutdown if initialization fails

Java 2D 游戏 - 定时器与线程?

windows - < 这时候出乎意料。在将输入数据作为 xml 发布到休息服务时从 curl 命令行

java - 在 jersey 2.x 中,我收到类似 java.util.concurrent.ExecutionException 的错误