bg-tutorials

Como Gerar um CSR no Apache

Este tutorial mostra como gerar um CSR no Apache usando a linha de comando OpenSSL no mesmo servidor que executa o Apache HTTP Server. Você criará dois arquivos em um único comando: uma nova chave privada e o CSR (Certificate Signing Request) correspondente, que você enviará à sua Autoridade Certificadora.

As etapas abaixo funcionam em todas as distribuições Linux modernas que hospedam o Apache (Ubuntu, Debian, RHEL, AlmaLinux, Rocky Linux, Amazon Linux 2023), já que cada uma vem com o OpenSSL 1.1.1 ou OpenSSL 3.x. Ambas as versões assinam a solicitação com SHA-256 por padrão, então você não precisa adicionar uma flag de digest. O mesmo comando também funciona no FreeBSD e no macOS com Apache.

Etapa 1: Conecte-se ao seu servidor Apache

Abra o Terminal no macOS ou Linux, ou o PowerShell ou Windows Terminal no Windows, e conecte-se ao servidor via SSH. Substitua o nome de usuário e o host pelos seus próprios:

ssh your-user@your-apache-server

Gere o CSR no mesmo servidor que hospedará o certificado. A chave privada é criada junto com o CSR e deve permanecer nesse servidor, então executar o comando no seu laptop e depois copiar a chave para outro lugar anula o propósito. Você também pode preferir fazer o trabalho em um diretório dedicado que possa localizar depois, por exemplo:

sudo mkdir -p /etc/ssl/yourdomain
cd /etc/ssl/yourdomain

Etapa 2: Gere a chave privada e o CSR

Se você já gerou seu CSR com outra ferramenta, vá diretamente para instalar o certificado no Apache.

Execute o seguinte comando OpenSSL. Ele cria uma chave RSA de 2048 bits e um CSR em uma única etapa, com o assunto e os Subject Alternative Names (SANs) fornecidos diretamente, para que o OpenSSL não interrompa para fazer perguntas:

openssl req -new -newkey rsa:2048 -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

O que cada parte faz:

  • -newkey rsa:2048 gera uma nova chave RSA de 2048 bits. 2048 bits é o mínimo atual para certificados públicos; você pode usar rsa:4096 para uma chave maior, ou mudar para ECDSA (veja abaixo).
  • -nodes deixa a chave privada sem criptografia para que o Apache possa lê-la na inicialização sem pedir uma senha.
  • -keyout e -out nomeiam os arquivos da chave privada e do CSR.
  • -subj fornece o assunto do certificado. Coloque aqui o nome real da sua empresa, estado e cidade, não os espaços reservados. CN (Common Name) é seu domínio principal.
  • -addext “subjectAltName=…” lista todos os nomes de host que o certificado deve cobrir. As CAs públicas validam com base na lista de SAN, então inclua o Common Name também aqui.

Substitua yourdomain.com pelo seu domínio real em todos os lugares. Para cobrir nomes de host adicionais, adicione-os à lista de SAN separados por vírgulas, por exemplo DNS:api.yourdomain.com. Para um certificado wildcard, inclua tanto o curinga quanto o domínio simples: DNS:*.yourdomain.com,DNS:yourdomain.com. Use apenas caracteres alfanuméricos nos campos do assunto e use o código de país oficial de duas letras para o campo C.

Se preferir uma chave ECDSA (menor e mais rápida, com P-256 amplamente suportada), gere a chave e o CSR desta forma:

openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes 
-keyout yourdomain.key 
-out yourdomain.csr 
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com" 
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"

Se preferir responder aos campos um de cada vez, execute openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr sem -subj e sem -addext. O OpenSSL solicitará cada campo, um por vez. Quando isso acontecer:

  • Country Name (C): o código ISO de duas letras do seu país, por exemplo US ou GB. Para certificados de Validação de Negócio ou Validação Estendida, este deve ser o país oficial de registro da sua organização.
  • State or Province Name (ST): o nome completo, por exemplo California. Não abrevie.
  • Locality Name (L): a cidade, por exemplo San Francisco.
  • Organization Name (O): o nome oficial registrado da sua empresa, por exemplo GPI Holding LLC. Para certificados de Validação de Domínio, você pode inserir NA.
  • Organizational Unit Name (OU): este campo está obsoleto e é ignorado pelas CAs públicas. Deixe em branco pressionando Enter.
  • Common Name (CN): o Fully Qualified Domain Name para o qual o certificado se destina, por exemplo www.yourdomain.com. Para um wildcard, use *.yourdomain.com.
  • Email Address: opcional e não utilizado pelas CAs públicas. Você pode deixá-lo em branco.
  • A challenge password e An optional company name: ambos são atributos obsoletos que as CAs públicas ignoram. Deixe-os em branco.

Sem a flag -addext, o CSR resultante não terá entradas SAN. As CAs públicas validam com base na lista de SAN e rejeitarão (ou substituirão silenciosamente) uma solicitação sem uma, portanto o caminho recomendado é o comando -subj combinado com -addext mostrado acima.

Etapa 3: Localize seus arquivos

Liste o diretório atual para confirmar que ambos os arquivos foram criados:

ls

Você deverá ver dois novos arquivos:

  • yourdomain.key: sua chave privada. Mantenha-a no servidor, faça backup dela com segurança e nunca a envie para ninguém, incluindo a Autoridade Certificadora. Quem possuir a chave pode se passar pelo seu site.
  • yourdomain.csr: seu Certificate Signing Request. Este é o arquivo que você envia ao provedor de SSL.

Restrinja a chave privada para que apenas o proprietário do arquivo possa lê-la:

chmod 600 yourdomain.key

Etapa 4: Verifique o CSR (opcional, mas recomendado)

Antes de enviá-lo, verifique se o CSR contém o assunto e os SANs corretos e se sua assinatura é válida. Isto decodifica a solicitação localmente com o OpenSSL:

openssl req -noout -text -verify -in yourdomain.csr

Confirme que a linha Subject mostra seus dados, que X509v3 Subject Alternative Name lista todos os nomes de host esperados, e que a verificação de assinatura exibe verify OK. O algoritmo de assinatura deve exibir sha256WithRSAEncryption (ou ecdsa-with-SHA256 para uma chave ECDSA). Se preferir não usar a linha de comando, cole o CSR em nosso decodificador de CSR online para ler os mesmos campos em um navegador.

Etapa 5: Envie seu CSR

Para copiar o CSR para seu pedido, imprima seu conteúdo:

cat yourdomain.csr

Você verá um bloco de texto como este:

-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(muitas mais linhas de caracteres base64)...
-----END CERTIFICATE REQUEST-----

Copie o bloco inteiro, incluindo as linhas —–BEGIN CERTIFICATE REQUEST—– e —–END CERTIFICATE REQUEST—– (cada marcador tem cinco hífens em cada lado). Esse bloco inteiro é o seu CSR. Cole-o no formulário do pedido durante sua compra, e mantenha a chave privada correspondente no servidor.

Se preferir não usar a linha de comando, você também pode criar a solicitação com nosso Gerador de CSR online. Observe que ele gera a chave privada no seu navegador, então salve essa chave você mesmo e mova-a para o servidor.

Depois que sua CA validar a solicitação, você receberá seu certificado. Dependendo do nível de validação, isso leva alguns minutos para Validação de Domínio, ou até vários dias úteis para Validação de Negócio e Validação Estendida.

Etapa 6: Instale o certificado no Apache

Quando o certificado chegar, coloque o certificado emitido (incluindo quaisquer intermediários concatenados em um único arquivo fullchain) e a chave privada no servidor, e depois aponte o Apache para eles no virtual host do seu site:

SSLCertificateFile    /etc/ssl/yourdomain/fullchain.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/yourdomain.key

O Apache moderno (2.4.8 e posterior) lê o certificado folha e quaisquer intermediários a partir de um único arquivo passado para SSLCertificateFile, então concatene seu certificado e o pacote da CA em um único arquivo. A diretiva antiga SSLCertificateChainFile está obsoleta e não deve ser usada no Apache atual. Teste a configuração com apachectl configtest e recarregue o Apache para aplicar a alteração. Para o fluxo de trabalho completo, veja nosso guia sobre como instalar um certificado SSL no Apache.

Economize 10% em certificados SSL ao fazer seu pedido hoje!

Emissão rápida, criptografia forte, 99,99% de confiança no navegador, suporte dedicado e garantia de reembolso de 25 dias. Código do cupom: SAVE10

Uma imagem detalhada de um dragão em voo
Escrito por

Redator de conteúdo experiente, especializado em certificados SSL. Transformação de tópicos complexos de segurança cibernética em conteúdo claro e envolvente. Contribua para melhorar a segurança digital por meio de narrativas impactantes.