Quero importar um certificado autoassinado para Java, para que qualquer aplicativo Java que tente estabelecer uma conexão SSL confie neste certificado.
Até agora, consegui importá-lo no
keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem
keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem
Ainda assim, quando eu tento correr HTTPSClient.class
, ainda recebo:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: falha na construção do caminho PKIX: sun.security.provider.certpath.SunCertPathBuilderException: não foi possível encontrar o caminho de certificação válido para o destino solicitado
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
são completamente desnecessárias na primeira parte. O segundo não faz nenhuma verificação de certificação. Tente com uma planícieURLConnection
para começar. Tem certeza que você tenha modificadocacerts
nolib/security
de sua instalação JRE? Você já tentou atrustmanager
opção de depuração ?Respostas:
No Windows, a maneira mais fácil é usar o portecle do programa .
System.out.println(System.getProperty("java.home"));
No Linux:
Você pode fazer o download do certificado SSL de um servidor Web que já o esteja usando assim:
Opcionalmente, verifique as informações do certificado:
Importe o certificado para o keystore Java cacerts:
fonte
ps -ef | grep java
que me dizia que meu java estava sendo executado a partir do openjdk localizado em / usr / lib / jvm / java-openjdk / bin / java. Além disso, se isso for para um aplicativo da web, lembre-se de reiniciar. Obrigado pela ajuda!!fonte
Acabei escrevendo um pequeno script que adiciona os certificados às lojas de chaves, por isso é muito mais fácil de usar.
Você pode obter a versão mais recente em https://github.com/ssbarnea/keytool-trust
`` ``
fonte
Isso funcionou para mim. :)
fonte
Se você estiver usando um certificado assinado por uma Autoridade de Certificação que não esteja incluído no arquivo cacerts Java por padrão, será necessário concluir a seguinte configuração para conexões HTTPS. Para importar certificados para cacerts:
fonte
O comando simples 'keytool' também funciona no Windows e / ou no Cygwin.
Se você estiver usando o Cygwin, aqui está o comando modificado que usei na parte inferior da resposta "S.Botha's":
Execute o comando keytool a partir dele, onde você fornece o caminho para o seu novo Cert no final, da seguinte maneira:
Observe que, se estiver no Cygwin, você está dando um caminho para um programa que não seja do Cygwin, portanto, o caminho é semelhante ao DOS e entre aspas.
fonte
Pode querer tentar
Sinceramente, não faço ideia de onde ele coloca seu certificado, se você apenas escrever,
cacerts
apenas dê um caminho completofonte
instalar certificado no java linux
/ opt / jdk (versão) / bin / keytools -import -alias aliasname -arquivo certificate.cer -keystore cacerts -storepass password
fonte
fonte