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.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.