Estou tentando conectar uma API da Web Java via HTTPS; no entanto, uma exceção é lançada:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
Segui estas etapas que aprendi com os tutoriais on-line de ferramentas-chave e certificados SSL:
Copiei a URL HTTPS no navegador, baixei os certificados SSL e os instalei no navegador usando o Internet Explorer.
Exportados os certificados para um caminho no meu computador, os certificados foram salvos como
.cer
Usou a opção de importação do keytool. O comando abaixo é executado sem erros.
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
Foi solicitada uma senha no prompt de comando, que eu inseri e fui autenticada.
A
cmd
janela imprimiu alguns dados e assinaturas de certificado e uma pergunta foi solicitada:Confiar neste certificado?
Eu respondi que sim.
O prompt do cmd exibido
O certificado foi adicionado ao keystore
No entanto, após essa mensagem, outra exceção foi exibida:
keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
Finalmente, quando verifiquei o keystore, o certificado SSL não foi adicionado e meu aplicativo apresenta a mesma exceção que eu estava recebendo antes ao tentar conectar:
(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
fonte
keytool
comando exato que você executou e sua saída? algumas das questões óbvias aqui são o erro de digitação de-keystore
argumento, eo fato de que keytool foi incapaz de encontrar o armazenamento de chaves para importar a chave naRespostas:
Isso pode acontecer se você não estiver executando o prompt de comando no modo administrador. Se você estiver usando o Windows 7, poderá executar, digite cmd e pressione Ctrl + Shift + enter. Isso abrirá o prompt de comando no modo administrador. Caso contrário, você também pode ir para iniciar -> todos os programas -> acessórios -> clique com o botão direito do mouse no prompt de comando e clique em 'executar como administrador'.
fonte
Eu tinha o mesmo problema no Windows e poderia resolvê-lo executando o cmd.exe como administrador (clique com o botão direito do mouse no menu Iniciar e depois em "Executar como administrador).
fonte
Eu estava tendo o mesmo problema ao importar o certificado no keystore local. Sempre que eu emitir o comando keytool, recebo o seguinte erro.
O certificado foi adicionado ao erro keytool do keystore: java.io.FileNotFoundException: C: \ Arquivos de Programas \ Java \ jdk1.8.0_151 \ jre \ lib \ security (Acesso negado)
Solução seguinte funciona para mim.
1) verifique se você está executando o prompt de comando no modo de administrador como administrador
2) Altere seu diretório atual para% JAVA_HOME% \ jre \ lib \ security
3) Emita o comando abaixo
keytool -import -alias "mycertificatedemo" -file "C: \ Usuários \ nome \ Downloads \ abc.crt" -keystore cacerts
3) dê a senha changeit
4) digite y
5) você verá a seguinte mensagem no êxito "O certificado foi adicionado ao keystore"
Certifique-se de dar as " cacerts " apenas no valor de parâmetro -keystore, como eu estava fornecendo o caminho completo como "C **: \ Arquivos de Programas \ Java \ jdk1.8.0_151 \ jre \ lib \ security **".
Espero que isso funcione
fonte
Verifique as permissões de gravação no keystore.
fonte
Para usuários de Mac, certifique-se de usar o sudo e, quando solicitado, forneça primeiro a senha do administrador, que será seguida pela senha do keystore, que normalmente deve ser "changeit", a menos que você realmente a tenha alterado.
fonte
Se você estiver usando o windows8:
command prompt
command prompt
e clique emRun as administrator
. Em seguida, execute o comando keytool.fonte
Você pode se dar permissões para corrigir esse problema.
Clique com o botão direito do mouse em cacerts> escolha propriedades> selecione a guia Securit> Permitir todas as permissões para todos os nomes de grupo e usuário.
Isso funcionou para mim.
fonte
Até executei o prompt de comando como administrador, mas não funcionou para mim com o erro abaixo.
Se o caminho para o keytool não estiver nos caminhos do sistema, você precisará usar o caminho completo para usar o keytool, que é
Então, o comando deve ser como
isso funcionou para mim.
fonte
Também recebi esse erro, mesmo que eu executei o cmd como administrador.
A causa principal é: O arquivo é do VCS (subversão, forçado etc.) e, quando verifiquei as propriedades desse arquivo, seus 'Atributos são somente leitura .
Então a solução é:
fonte
RESOLVIDO
fonte
Você pode armazenar outro disco ou caminho (não C) EX: D \
fonte