Conecte a un sitio https con un certificado p12 dado
l lado del servidor me dio un.p12
archivo de certificado en el que hice clic e instalé en mi máquina y luego puedo acceder aHTTPS
sitio a través del navegador. Ahora quieren que rastree su sitio con el certificado otorgado. Estoy atrapado en la primera etapa, tratando de obtener elinputStream
desde elhttpsURLConnection
. El sitio no tiene inicio de sesión. Solo verifica si tiene el certificado o no.
o que he hecho hasta ahora fue usar Firefox para exportar el certificado en una.crt
formato de archivo. Luego usé el comando keytool para importarlo (el.crt
archivo, no el.p12
) en el almacén de claves de Java. Luego en el código:
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
File ksFile = new File(keystorePath);
in = new FileInputStream(ksFile);
ks.load(in, "changeit".toCharArray());
X509Certificate cert = (X509Certificate) ks.getCertificate(certificateAlias);
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection con = (HttpsURLConnection) (new URL(urlString)).openConnection();
con.connect();
con.getInputStream();
con.disconnect();
LosgetInputStream()
me dará 403 errores de acceso prohibido. He buscado otros temas relacionados y en realidad estoy más confundido que antes de leerlos. Agradecería enormemente las respuestas.
Detalles adicionales
Acabo de crear una instancia del certificado, y no he dejado que el programa conozca ningún tipo de clave (privada, pública, etc.). Entonces, creo que debo presentar estas claves al servidor, haciéndole saber que en realidad tengo el certificado. No tengo ni idea de cómo hacer esto, tanto la lógica como la sintaxis. He intentado el comando keytool para importar el archivo .p12 cert al almacén de claves, pero de alguna manera, keytool no reconoce la opción -pkcs12. Cualquier idea sobre cómo usar directamente este certificado .p12 también sería genial.trustAllCert es una matriz de TrustMangers de un elemento que no valida nada (confía en todos). No sé si debería seguir usando esto. De hecho, ahora tengo un solo certificado en el que confiar. ¿Cuál es la forma correcta de escribir un trustManger en este caso? No tengo control sobre el lado del servidor. Todo lo que me dieron es la URL para acceder a su sitio, que está bajo el protocolo HTTPS, y un certificado .p12. El sitio no tiene inicio de sesión. Si el certificado está instalado, puedo ingresar.