Como gerar um CSR e instalar um certificado SSL da linha de comando

Na maioria das minhas experiências, sempre tive o luxo de usar Plesk, CPanel ou algum outro utilitário GUI para gerar um CSR em um servidor no qual desejo instalar um certificado SSL.

Hoje, recebi a tarefa de renovar um certificado SSL para um cliente em que o servidor não tem uma camada GUI para administrá-lo. Um ex-membro da equipe obviamente fez isso antes para instalar o certificado SSL original, mas não consegui encontrar as etapas que eles executaram no histórico da linha de comando, então tive que começar do zero. Acabei usando Apache + OpenSSL para gerar o CSR.

Dependendo de como seu servidor está configurado, um bom lugar para considerar o armazenamento de arquivos SSL será:

/etc/apache2/ssl/{name of your domain or client}/

Crie o diretório se necessário e navegue aqui.

Supondo que você tenha OpenSSL instalado no servidor, você pode usar o seguinte comando para gerar um CSR e uma chave privada. Obviamente, substitua “servidor” pelo nome do seu servidor (como www.domain.com ). Não recomendo gerar nada com menos segurança, mas em teoria você pode alterar o 2048 para um nível de criptografia diferente, se desejar.

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr

Em seguida, será solicitado que você preencha os campos típicos que você preenche ao provisionar um CSR por meio de uma interface GUI (código do país, estado, localidade, organização, unidade organizacional, nome comum e e-mail). Você pode pular os campos opcionais adicionais, como frase de desafio, etc.

Nesse ponto, o server.key e o server.csr terão sido gerados no diretório atual.

Pegue o conteúdo do arquivo .csr e vá para o seu provedor de certificado favorito. Minha preferência é Geotrust, mas você pode ir a qualquer lugar. Depois de receber seu certificado primário e sua cadeia ou certificado intermediário (também conhecido como certificado CA), é hora de criar 2 novos arquivos no mesmo diretório.

vi domain.com.crt  //  of course, change the name to reflect the same pattern as listed above in the command where you generated the csr and private key files

Aqui, cole o conteúdo do certificado principal.

vi geotrust.crt  //  of course, change the name semantically if you elected to go with another provider.

Aqui, cole o conteúdo do seu certificado de rede.

Finalmente, você precisa dizer ao Apache para usar esses arquivos de certificado para o domínio em questão. Novamente, dependendo de como seu servidor está configurado, localize o arquivo conf que contém a configuração do host virtual para seu domínio e abra-o em um editor. Se estiver usando o Apache 2, pode estar em

/etc/apache2/sites-available/

Depois de aberto, encontre o contêiner de host virtual para a porta 443 e certifique-se de que as seguintes diretivas sejam definidas (ou atualizadas, se você estiver renovando para usar um novo certificado)

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt // name is the same as what you generated it above.
SSLCertificateKeyFile /etc/apache2/ssl/server.key // name is the same as what you generated it above.
SSLCACertificateFile /etc/apache2/ssl/geotrust.crt // name changes if you changed it as per above.

Reinicie o Apache e seu novo certificado deve estar em vigor.

service apache2 restart

Este exemplo tem como objetivo representar uma orientação sobre um caso simples e pode não ser perfeito, dependendo do seu cenário específico. Agradeço a http://www.digicert.com/csr-creation-apache.htm por fornecer a primeira metade da minha solução.