O SSL funciona ao combinar chaves públicas e privadas. É por isso que você primeiro deve gerar a chave e gerar o CSR com base nessa chave. Posteriormente, quando você estiver usando este certificado, verá que seu aplicativo ou serviço precisa saber onde o certificado E está onde está a chave. Você precisa da chave para usar o certificado corretamente. Em alguns casos, a chave e o certificado podem ser concatenados no mesmo arquivo ou importados para um armazenamento de chaves java.
Quando você vê algum sinalizador como '-sha256' no openssl req, está dizendo ao openssl que você deseja colocar uma senha neste certificado (isto é uma péssima idéia e uma dor de cabeça, 99% de chance de não querer Passphrase apenas torna impossível para qualquer pessoa ver o seu recurso, a menos que tenha uma senha específica para o certificado.Isso nunca está em uso, em 7 anos eu nunca vi ninguém usar uma frase secreta ssl.
Isso responde à sua pergunta do porquê. Agora, como você faz isso:
- openssl genrsa -out mydomain.com.key 2048
Agora você acabou de criar uma chave de criptografia de 2048 bits. Você precisa do mínimo de 2048 agora ou o seu certificado falhará na auditoria e você precisará refazê-lo.
- openssl req -new -key ./mydomain.com.key -out mydomain.com.csr
Agora você disse ao openssl para criar um CSR com base na chave que você criou na parte 1. Agora você tem esse CSR. Você também pode usar o openssl para gerar seu próprio certificado não assinado ou pode enviá-lo a um registrador para fornecer o certificado para você (custa $).
Quando você obtiver esse certificado, fornecerá uma diretriz para seu aplicativo ou serviço informando onde a chave está e onde está o certificado. Se você usar um certificado usado, ele continuará a criptografar tão bem quanto o assinado, mas os navegadores o considerarão como não confiável devido ao capitalismo (e à segurança).