Soy bastante nuevo en HTTPS/SSL/TLS y estoy un poco confundido sobre qué se supone que los clientes deben presentar al autenticar con certificados.autenticación de certificado de cliente Java HTTPS
Estoy escribiendo un cliente de Java que necesita hacer una simple POST de datos a una URL en particular. Esa parte funciona bien, el único problema es que se supone que debe hacerse a través de HTTPS. La parte HTTPS es bastante fácil de manejar (ya sea con HTTPclient o con el soporte HTTPS incorporado de Java), pero estoy atascado en la autenticación con certificados de cliente. Me di cuenta de que ya hay una pregunta muy similar aquí, que aún no probé con mi código (lo haré lo suficientemente pronto). Mi problema actual es que, haga lo que haga, el cliente de Java nunca envía el certificado (puedo verificarlo con volcados de PCAP).
Me gustaría saber qué es exactamente lo que se supone que el cliente debe presentar al servidor cuando se autentica con certificados (específicamente para Java, si eso importa en absoluto)? ¿Es este un archivo JKS, o PKCS # 12? Lo que se supone que debe estar en ellos; solo el certificado del cliente, o una clave? Si es así, ¿qué tecla? Existe una gran confusión sobre los diferentes tipos de archivos, tipos de certificados y demás.
Como he dicho antes, soy nuevo en HTTPS/SSL/TLS, por lo que agradecería algo de información de fondo también (no tiene que ser un ensayo; me conformaré con enlaces a buenos artículos).
"Cuando el certificado del cliente que desea presentar para la autenticación no está firmado por una de estas CA, no se presentará en absoluto". Los certificados no se presentan porque el cliente sabe que no serán aceptados por el servidor. Además, su certificado puede ser firmado por una CA intermedia "ICA", y el servidor puede presentar a su cliente la CA raíz "RCA", y su navegador web aún le permitirá elegir su certificado aunque esté firmado por ICA y no por RCA. – KyleM
Como ejemplo del comentario anterior, considere una situación en la que tiene una CA raíz (RCA1) y dos CA intermedias (ICA1 e ICA2). En Apache Tomcat si importa RCA1 en el almacén de confianza, su navegador web presentará TODOS los certificados firmados por ICA1 e ICA2, aunque no estén en su tienda de confianza. Esto se debe a que es la cadena lo que no importa cert individuales. – KyleM
"en mi opinión, este comportamiento es extraño, pero estoy seguro de que hay una razón para ello". La razón es que eso es lo que dice en RFC 2246. Nada raro sobre eso. Permitir que los clientes presenten certificados que no serán aceptados por el servidor es lo que sería extraño, y una completa pérdida de tiempo y espacio. – EJP