Seleccionar página

Apache + mod_proxy_http/ajp + Tomcat/JBoss + SSLVerifyClient

por | Abr 29, 2014 | GNU / Linux, Java, JBoss AS / JBoss EAP / WildFly

Si se tiene un Apache + JBoss con validación de certificados de cliente en el Apache y se tiene que pasar el certificado a JBoss hay que poner la siguiente linea para pasar el certificado y que sea accesible en JBOSS:

SSLOptions +ExportCertData +StdEnvVars

Y sacarlo asi:

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

Esto vale si se usa mod_proxy_ajp, pero no si se usa mod_proxy_http.

Para hacer lo mismo con mod_proxy_http hay que crear una variable en la cabecera:

RequestHeader set X-ClientCert %{SSL_CLIENT_CERT}s

Y luego usar esa variable desde java en un filtro o servlet al que se acceda:

public static X509Certificate parseCertificate(HttpServletRequest _request) throws CertificateException{

    String certStr = _request.getHeader("x-clientcert");

    ServletRequest req = (ServletRequest)_request;
    String certStr = req.getParameter(arg0);
    // Antes hay quitar la cabecera y el pie
    byte [] decoded = Base64.decode(certStr.replaceAll("-----BEGIN CERTIFICATE-----", "").replaceAll("-----END CERTIFICATE-----", ""));

    return (X509Certificate)CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(decoded));
}

Te puede interesar…

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *