Как получить сертификат клиента из запроса в REST-сервисе с использованием Quarkus с использованием двухстороннего SSL - PullRequest
0 голосов
/ 27 марта 2020

Следуя инструкциям Quarkus Getting Started и включению 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");
     }

Следуя руководству по началу работы, внедрение HttpServletRequest не является прямым, как описано в этом выпуске

Каким был бы способ получить доступ к цепочка сертификатов клиента тогда?

1 Ответ

0 голосов
/ 27 марта 2020

После некоторого исследования я получил следующее решение, используя класс 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");
}
...