Temos servidor e cliente JAVA se comunicam em uma rede usando SSL. O servidor e o cliente se autenticam mutuamente usando certificados. O tipo de armazenamento de chaves usado pelo servidor e pelo cliente é JKS. O servidor e o cliente carregam seus arquivos de keystore e armazenamento confiável. Os nomes dos arquivos keystore e truststore são: server.keystore, server.truststore, client.keystore e client.truststore. Estou usando certificados autoassinados apenas para teste.
Questões:
Q1 Gostaria de saber por que preciso adicionar os certificados do servidor e do cliente em seus respectivos armazenamentos confiáveis, na etapa 6.
Q2 Posso reduzir as etapas numéricas para obter a mesma coisa? Se sim, então como?
Etapas para criar chave RSA, certificados autoassinados, keystore e armazenamento confiável para um servidor
Gere uma chave RSA privada
openssl genrsa -out diagserverCA.key 2048
Crie um certificado x509
openssl req -x509 -new -nodes -key diagserverCA.key \ -sha256 -days 1024 -out diagserverCA.pem
Crie um keystore PKCS12 a partir da chave privada e do certificado público.
openssl pkcs12 -export -name server-cert \ -in diagserverCA.pem -inkey diagserverCA.key \ -out serverkeystore.p12
Converter keystore PKCS12 em um keystore JKS
keytool -importkeystore -destkeystore server.keystore \ -srckeystore serverkeystore.p12 -srcstoretype pkcs12 -alias server-cert
Importe o certificado de um cliente para o armazenamento confiável do servidor.
keytool -import -alias client-cert \ -file diagclientCA.pem -keystore server.truststore
Importe o certificado de um servidor para o armazenamento confiável do servidor.
keytool -import -alias server-cert \ -file diagserverCA.pem -keystore server.truststore
Etapas para criar chave privada RSA, certificado autoassinado, keystore e armazenamento confiável para um cliente
Gere uma chave privada
openssl genrsa -out diagclientCA.key 2048
Crie um certificado x509
openssl req -x509 -new -nodes -key diagclientCA.key \ -sha256 -days 1024 -out diagclientCA.pem
Crie o keystore PKCS12 a partir da chave privada e do certificado público.
openssl pkcs12 -export -name client-cert \ -in diagclientCA.pem -inkey diagclientCA.key \ -out clientkeystore.p12
Converter um keystore PKCS12 em um keystore JKS
keytool -importkeystore -destkeystore client.keystore \ -srckeystore clientkeystore.p12 -srcstoretype pkcs12 \ -alias client-cert
Importe o certificado de um servidor para o armazenamento confiável do cliente.
keytool -import -alias server-cert -file diagserverCA.pem \ -keystore client.truststore
Importe o certificado de um cliente para o armazenamento confiável do cliente.
keytool -import -alias client-cert -file diagclientCA.pem \ -keystore client.truststore