Como criar keystore e armazenamento confiável usando certificado autoassinado?

14

Temos o servidor JAVA e o cliente se comunicando por uma rede usando SSL. O servidor e o cliente autenticam-se mutuamente usando certificados. O tipo de keystore usado pelo servidor e pelo cliente é JKS. O servidor e o cliente carregam seus arquivos keystore e truststore. Os nomes dos arquivos keystore e truststore são: server.keystore, server.truststore, client.keystore e client.truststore. Estou usando certificados auto-assinados somente para testes.

Perguntas:

Q1. Gostaria de saber por que preciso adicionar os certificados do servidor e do cliente em seus respectivos armazenamentos, na etapa 6.

Q2. Posso reduzir o número de passos para conseguir a mesma coisa? Se sim, então como?

Etapas para criar chave RSA, certificados autoassinados, keystore e armazenamento confiável para um servidor

  1. Gerar uma chave RSA privada

    openssl genrsa -out diagserverCA.key 2048
    
  2. Crie um certificado x509

    openssl req -x509 -new -nodes -key diagserverCA.key \
                -sha256 -days 1024 -out diagserverCA.pem
    
  3. 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
    
  4. Converter keystore PKCS12 em um keystore JKS

    keytool -importkeystore -destkeystore server.keystore \
            -srckeystore serverkeystore.p12 -srcstoretype pkcs12 
            -alias server-cert
    
  5. Importe o certificado de um cliente para o armazenamento confiável do servidor.

    keytool -import -alias client-cert \
            -file diagclientCA.pem -keystore server.truststore
    
  6. 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, armazenamento de chaves e armazenamento confiável para um cliente

  1. Gerar uma chave privada

    openssl genrsa -out diagclientCA.key 2048
    
  2. Crie um certificado x509

    openssl req -x509 -new -nodes -key diagclientCA.key \
                -sha256 -days 1024 -out diagclientCA.pem
    
  3. 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
    
  4. Converter um keystore PKCS12 em um keystore JKS

    keytool -importkeystore -destkeystore client.keystore \
            -srckeystore clientkeystore.p12 -srcstoretype pkcs12 \
            -alias client-cert
    
  5. Importe o certificado de um servidor para o armazenamento confiável do cliente.

    keytool -import -alias server-cert -file diagserverCA.pem \
            -keystore client.truststore
    
  6. Importe o certificado de um cliente para o armazenamento confiável do cliente.

    keytool -import -alias client-cert -file diagclientCA.pem \
            -keystore client.truststore
    
por vic99 23.02.2017 / 17:39

1 resposta

1

O https normal requer apenas 1 comando;

keytool -genkeypair

Se o cliente não confiar cegamente em qualquer certificado, você precisará copiar o certificado público do servidor para o cliente.

Por que você está usando o openssl?

link

    
por 08.03.2018 / 14:48

Tags