Conecte-se a um site https com um determinado certificado p12
O lado do servidor me deu uma.p12
rquivo de certificado @ no qual eu cliquei e instalei na minha máquina e posso acessar oHTTPS
site através do navegador. Agora eles querem que eu rastreie o site com o certificado fornecido. Estou preso na primeira fase, tentando obter oinputStream
dehttpsURLConnection
. O site não possui login. Ele verifica apenas se você possui o certificado ou nã
O que eu fiz até agora foi usar o Firefox para exportar o certificado em um.crt
formato de arquivo. Em seguida, usei o comando keytool para importá-lo (o.crt
, não o.p12
) no keystore java. Depois, no 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();
OgetInputStream()
me dará 403 acesso proibido a erro. Eu pesquisei outros tópicos relacionados e estou realmente mais confuso do que antes de lê-los. Gostaria muito de receber respostas.
Detalhes adicionais
Acabei de instanciar o certificado e não deixei o programa conhecer nenhum tipo de chave (privada, pública etc.). Então, o que eu acredito que devo apresentar essas chaves ao servidor, informando que na verdade estou segurando o certificado. Não tenho absolutamente nenhuma idéia de como fazer isso, tanto em lógica quanto em sintax Tentei o comando keytool para importar o arquivo .p12 cert no keystore, mas, de alguma forma, a opção -pkcs12 não é reconhecida pelo keytool. Qualquer idéia de como usar diretamente esse certificado .p12 também seria ótima.trustAllCert é uma matriz de um elemento do TrustMangers que não valida nada (confie em todos). Não sei se devo continuar usando isso. Na verdade, agora eu realmente tenho um único certificado em que confiar. Qual é a maneira correta de escrever um trustManger neste caso? Não tenho controle sobre o lado do servidor. Tudo o que me foi dado é o URL para acessar o site, que está sob o protocolo HTTPS e um certificado .p12. O site não possui login. Se o certificado estiver instalado, eu posso entrar.