Como confiar numa Autoridade de certificação em Java?

a minha aplicação liga-se a um serviço web SSL que usa um certificado para verificar a sua identidade. Recentemente, este certificado mudou e como não é assinado por uma autoridade de confiança, parte da minha aplicação falhou. O conselho do serviço para proteger contra esta situação no futuro é que eu deveria começar a confiar na Autoridade de assinatura do certificado existente, em vez dos certificados individuais.

Como isso pode ser alcançado em Java?

actualmente estou adicionando o certificado que fornecem a um teclado usando o keytool e compondo - o num directório qualquer coisa como:

public static TrustManager[] getTrustManagers() throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException {
    KeyStore tks = KeyStore.getInstance(KeyStore.getDefaultType());
    tks.load(StarTrustManagerFactory.class.getResourceAsStream("webservice.ks"), "password".toCharArray());
    TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
    tmf.init(tks);
    return tmf.getTrustManagers();
}; 
Há alguma forma de adaptar esta abordagem para devolver um certificado que confie na Autoridade de assinatura dos certificados que tenho? Além disso, como posso extrair as informações relativas ao signatário do certificado do certificado que tenho?

Obrigado, Dan.

Author: Dan, 2014-10-29

1 answers

Assumindo que o código publicado funcionou antes do Certificado ser alterado, deixa-o como está. Em vez disso, modifique o serviço web.KS keystore e importar os certificados intermédios e root ca do local a que se está a ligar.

Pode obter estes certificados visitando o endereço num navegador web e gravando-os no disco. Como farias isto no firefox, vê. https://superuser.com/a/97203/172370 . No entanto, no Passo 4 das instruções associadas, seleccione a root / intermediate ca certs to export (carregue no campo hierarquia de certificados no desejado).

Então assumindo o .o ficheiro ks é um teclado jks, usa o keytool para importar os certificados para o teclado.

Update: ignore o que eu disse sobre o certificado intermediário, você não deve precisar dele (veja Uma loja precisa do certificado sub-ca?). Basta importar o certificado da AC raiz.

 2
Author: poida, 2017-05-23 11:54:02