permitida - keystore java ejemplo
Usar SSLContext con solo un certificado CA y sin keystore (1)
Necesito configurar un javax.net.ssl.SSLContext
para usar en una aplicación Jersey-Client. Todo lo que quiero hacer es el contexto para aceptar un certificado personalizado de root ca. ¿Es realmente cierto que no hay forma de generar un archivo de almacén de claves e importar el certificado de CA?
¿Es realmente cierto que no hay forma de generar un archivo de almacén de claves e importar el certificado de CA?
Hay forma de hacerlo sin un archivo de almacén de claves, pero dado que tendría que cargar el certificado de CA que desea confiar de una forma u otra, tendrá que cargar un archivo o recurso de alguna manera.
(También podría implementar su propio TrustManager
que realiza todas las llamadas para utilizar la API de ruta de certificación, sin utilizar la API de KeyStore
, pero eso solo aumentaría la complejidad de su código, no lo reduciría. También debería comprender la guía del programador Java PKI para hacer esto correctamente).
Si realmente no desea un archivo de almacén de claves, podría usar la API de KeyStore
en la memoria y cargar el certificado directamente.
Algo a lo largo de estas líneas debería funcionar (no probado):
InputStream is = new FileInputStream("cacert.crt");
// You could get a resource as a stream instead.
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate caCert = (X509Certificate)cf.generateCertificate(is);
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null); // You don''t need the KeyStore instance to come from a file.
ks.setCertificateEntry("caCert", caCert);
tmf.init(ks);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
(Recuerde cerrar todo y manejar las excepciones).
Ya sea que usted KeyStore
si cargar el certificado de esta manera o cargar el certificado en una instancia similar de KeyStore
desde un archivo de almacén de claves es más conveniente.