Preciso importar um certificado para meu keystore da JVM. Estou usando o seguinte:
keytool -import -alias daldap -file somecert.cer
então provavelmente precisaria mudar minha ligação para algo como:
keytool -import -alias daldap -file somecert.cer -keystore cacerts –storepass changeit
Respostas:
Seu keystore estará no seu
JAVA_HOME---> JRE -->lib---> security--> cacerts
. Você precisa verificar onde seu JAVA_HOME está configurado, possivelmente um desses lugares,Computador ---> Avançado -> Variáveis de ambiente ---> JAVA_HOME
Os arquivos em lote de inicialização do servidor.
No seu comando de importação -keystore cacerts (forneça o caminho completo para o JRE acima aqui em vez de apenas dizer cacerts).
fonte
Localização do Keystore
Cada comando keytool possui uma
-keystore
opção para especificar o nome e o local do arquivo persistente de keystore para o keystore gerenciado pelo keytool. O keystore é armazenado por padrão em um arquivo nomeado.keystore
no diretório inicial do usuário, conforme determinado pela propriedade do sistema "user.home". Com o nome de usuário uName, o valor da propriedade "user.home" é padronizado comoPortanto, se o nome do usuário for "cathy", "user.home" será padronizado como
http://docs.oracle.com/javase/1.5/docs/tooldocs/windows/keytool.html
fonte
~/.keystore
arquivo misterioso ! Se eu deixasse o-keystore
parâmetro, não conseguiria descobrir qualkeytool
segmentação de keystore padrão . Continuei procurando por outrocacerts
lugar na máquina. Eu não esperava que o keytool gerasse~/.keystore
no diretório inicial nem que fosse nomeado em.keystore
vez decacerts
. Você preencheu um espaço em branco que o pessoal do Java deve documentar! Obrigado!Mac OS X 10.12 com Java 1.8:
$ JAVA_HOME / jre / lib / security
/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home
A partir daí, está em:
Eu tenho um keystore de cacerts lá.
Para especificar isso como uma opção de VM:
Não estou dizendo que esta é a maneira correta (por que o java não sabe procurar dentro de JAVA_HOME?), Mas é isso que eu tinha que fazer para fazê-lo funcionar.
fonte
Você pode encontrá-lo no diretório "Página inicial":
No Windows 7:
No Linux (Ubuntu):
fonte
user.home
é igual ao$HOMEDRIVE$HOMEPATH
definido pelo Windows e não em$HOME
conjunto pelo cygwin ondeHOMEDRIVE=C:
eHOMEPATH=\Users\[YOUR ACCOUNT]
Isso funciona para mim:
Somente para Linux. Meu Solaris não possui link de leitura. No final, eu usei este Perl-Script:
fonte
Como o DimtryB mencionou, por padrão, o keystore está no diretório do usuário. Mas se você estiver tentando atualizar o
cacerts
arquivo, para que a JVM possa escolher as chaves, será necessário atualizar ocacerts
arquivo emjre/lib/security
. Você também pode visualizar as chaves executando o comandokeytool -list -keystore cacerts
para ver se seu certificado foi adicionado.fonte
lib/security
caminho correto automaticamente se receber apenas o nome relativo.-importcert
. O comando list mostra os certificados em todo o sistema, mas o comando import gera um novo arquivo no diretório atual.updatedb; locate cacerts
ajuda a descobrir onde estão os locais de instalação dos arquivos cacerts.No Debian, usando a versão openjdk "1.8.0_212", encontrei cacerts aqui:
Certamente seria útil se houvesse um comando padrão que imprimisse esse caminho.
fonte
Para mim, usando a imagem oficial do OpenJDK 12 Docker , o local do keystore Java era:
fonte
keytool -import -file example.crt -alias exampleCA -keystore truststore.jks
também usará o parâmetro-keystore
... IMHO pouco claro. E por último mas não menos importante: eu estava pesquisando exatamente sobre esse problema - e achei essa pergunta. Talvez outros expiram o mesmo.Encontramos esse problema em um Tomcat executando a partir de um diretório jre que foi (quase totalmente) removido após uma atualização automática do jre, para que o jre em execução não pudesse mais encontrar o jre ... / lib / security / cacerts porque ele não existia mais.
Reiniciar o Tomcat (depois de alterar a configuração para executar a partir do local diferente do jre) corrigiu o problema.
fonte
Além de todas as respostas acima:
Se a atualização do arquivo cacerts no diretório JRE não ajudar, tente atualizá-lo no JDK.
C: \ Arquivos de programas \ Java \ jdk1.8.0_192 \ jre \ lib \ security
fonte