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));
}

0 comentarios

Enviar un comentario

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

Blog de Neodoo Microsystems
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles. Puedes encontrar más información en nuestra Política de privacidad y Política de cookies.