Como meu programa java sabe onde está o meu keystore que contém o certificado? Ou então, como digo ao meu programa java onde procurar o keystore?
Depois de especificar o keystore de alguma maneira, como especificar o certificado a ser usado para autenticar o servidor no cliente?
Respostas:
fonte
As propriedades SSL são configuradas no nível da JVM por meio das propriedades do sistema. Ou seja, você pode defini-los quando executa o programa (java -D ....) ou pode defini-los no código executando System.setProperty.
As chaves específicas que você precisa definir estão abaixo:
fonte
Apenas uma palavra de cautela. Se você estiver tentando abrir um keystore JKS existente no Java 9 em diante, precisará mencionar também as seguintes propriedades com o valor "JKS":
O motivo é que o tipo de keystore padrão, conforme prescrito no arquivo java.security, foi alterado para pkcs12 de jks a partir do Java 9 em diante.
fonte
Primeiro de tudo, existem dois tipos de keystores.
Individual e Geral
O aplicativo usará o indicado na inicialização ou o padrão do sistema.
Será uma pasta diferente se o JRE ou JDK estiver em execução ou se você verificar a pessoal ou a "global".
Eles também são criptografados
Em resumo, o caminho será como:
$JAVA_HOME/lib/security/cacerts
para o "geral", que tem toda a autoridade de certificação para as autoridades e é bastante importante.fonte
você também pode mencionar o caminho em tempo de execução usando as
-D
propriedades abaixoNo meu aplicativo apache spark, eu costumava fornecer o caminho de certs e keystore usando a
--conf
opção eextraJavaoptions
no envio de spark como abaixofonte