Además de lo que dijo @Tom Leek's acerca de la API de ruta de certificación, parece que está hablando de "certificados TLS", que supongo que implica que puede estar usando su certificado X.509 dentro del alcance de TLS.
Para hacer esto como parte de la pila TLS de Java (JSSE), puede usar la infraestructura existente X509TrustManager
. Debo admitir que no estoy seguro de si se verifica en RFC 5280 o RFC 3280 , su especificación más antigua (probablemente dependa de la versión de Java que esté usando). Asumo Sun / Oracle JRE 6, pero la implementación variará dependiendo de proveedores de seguridad instalados.
Este es un contenedor encima de la API de ruta de certificación ya mencionada.
Aquí hay un ejemplo que inicializa TrustManagerFactory
con null
: usará valores predeterminados para los anclajes de confianza . Lo siguiente le dará a los administradores de confianza:
TrustManagerFactory factory = TrustManagerFactory.getInstance("PKIX");
factory.init((KeyStore)null);
TrustManager[] trustManagers = factory.getTrustManagers();
Los métodos check*
del administrador de confianza lanzan un CertificateException
cuando algo ha fallado. También verifica la validez de la fecha.
Los administradores de confianza se pueden utilizar para inicializar un SSLContext
, que luego puede usarse para inicializar un SSLSocket
(a través de la fábrica) o SSLEngine
. De forma predeterminada, SSLSocketFactory
usa el SSLContext
predeterminado, que se inicializa con un número de valores predeterminados .
También puede crear su propio TrustManager
si necesita verificar más extensiones para su aplicación y / o relajar ciertas reglas.
(Por ejemplo, he escrito una pequeña biblioteca para envolver a los administradores de confianza existentes y acepta otras formas de certificados, como certificados proxy ( RFC 3820 - no 3280).)
Para verificar extensiones específicas, recomiendo usar BouncyCastle , ya que proporciona estructuras de datos para tratar con ASN.1 y así sucesivamente.