bg-tutorials

Como gerar um CSR no NGINX

Este tutorial mostra como gerar um CSR no NGINX. O NGINX não gera Pedidos de Assinatura de Certificado (CSR) por si só: você cria a chave privada e o CSR com o OpenSSL no mesmo servidor que hospedará o certificado e, em seguida, envia o CSR à sua Autoridade Certificadora. Quando o certificado emitido retornar, você aponta o NGINX para ele com as diretivas ssl_certificate e ssl_certificate_key.

Os passos abaixo funcionam em todas as distribuições Linux suportadas que incluem o NGINX (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Amazon Linux), pois cada uma delas inclui o OpenSSL 1.1.1 ou 3.x. O OpenSSL moderno assina os pedidos com SHA-256 por padrão, portanto você não precisa adicionar uma flag de digest.

Passo 1: Conecte-se ao seu servidor NGINX

Conecte-se ao servidor que executa o NGINX via SSH a partir da sua máquina local (Terminal no macOS ou Linux, PowerShell ou Windows Terminal no Windows). Substitua o nome de usuário e o host pelos seus próprios:

ssh your-user@your-nginx-server

Gere o CSR no servidor que vai servir o certificado. A chave privada é criada junto com o CSR e deve permanecer nesse servidor. Executar esses comandos localmente e depois copiar a chave para outro lugar anula o propósito de se ter uma chave privada.

Passo 2: Gere a chave privada e o CSR

Execute o seguinte comando. Ele cria uma chave privada RSA de 2048 bits e um CSR correspondente em uma única etapa, com o assunto e os Nomes Alternativos do Assunto (SANs) fornecidos diretamente para que o OpenSSL não pare 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 aceito pelas CAs públicas; 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 NGINX possa lê-la na inicialização sem pedir uma senha. Se preferir criptografar a chave, remova -nodes e use a diretiva ssl_password_file do NGINX para fornecer a senha ao iniciar e recarregar.
  • -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 valores de exemplo. CN (Common Name) é o 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, portanto inclua também o Common Name aqui. A flag -addext requer OpenSSL 1.1.1 ou mais recente; toda distribuição Linux suportada inclui pelo menos essa versão.

Substitua yourdomain.com pelo seu domínio real em todo o comando. Para cobrir nomes de host adicionais, adicione-os à lista de SAN separados por vírgulas, por exemplo DNS:api.yourdomain.com. Para um wildcard, inclua tanto o wildcard quanto o domínio simples: DNS:*.yourdomain.com,DNS:yourdomain.com.

Se preferir uma chave ECDSA (menor e mais rápida, com P-256 amplamente suportado), 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 o seu OpenSSL não suportar -addext

Em sistemas muito antigos com OpenSSL anterior à versão 1.1.1, a flag -addext não está disponível. Crie um pequeno arquivo de configuração chamado san.cnf com este conteúdo:

[ req ]
default_bits       = 2048
prompt             = no
default_md         = sha256
distinguished_name = dn
req_extensions     = req_ext

[ dn ]
C  = US
ST = YourState
L  = YourCity
O  = YourCompany
CN = yourdomain.com

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = yourdomain.com
DNS.2 = www.yourdomain.com

Depois execute:

openssl req -new -newkey rsa:2048 -nodes 
-keyout yourdomain.key -out yourdomain.csr -config san.cnf

Passo 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 com segurança e nunca a envie a ninguém, incluindo a Autoridade Certificadora. Quem possuir a chave pode se passar pelo seu site.
  • yourdomain.csr: seu Pedido de Assinatura de Certificado. Este é o arquivo que você envia ao provedor de SSL.

Defina permissões restritas na chave privada imediatamente para que apenas o root possa lê-la:

sudo chmod 600 yourdomain.key
sudo chown root:root yourdomain.key

Passo 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. Isso decodifica o pedido 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 da assinatura exibe verify OK. O algoritmo de assinatura deve mostrar 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.

Passo 5: Envie seu CSR

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

cat yourdomain.csr

Você verá um bloco de texto como este:

-----BEGIN CERTIFICATE REQUEST-----
MIIBozCB... (a long string of characters)
-----END CERTIFICATE REQUEST-----

Copie o bloco inteiro, incluindo as linhas —–BEGIN CERTIFICATE REQUEST—– e —–END CERTIFICATE REQUEST—– (cada marcador tem cinco hífens de cada lado). Todo esse bloco é o seu CSR. Cole-o no formulário de 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 o pedido com nosso Gerador de CSR online. Observe que ele gera a chave privada no seu navegador, então salve essa chave você mesmo e a transfira para o servidor.

O que acontece depois que a CA emite o certificado

Assim que a CA validar o CSR e emitir o certificado, você normalmente receberá seu certificado de servidor (um arquivo .crt nomeado de acordo com seu domínio) mais um ou mais certificados intermediários, às vezes agrupados em um arquivo .ca-bundle. O NGINX espera que o certificado do servidor e a cadeia intermediária estejam combinados em um único arquivo (a “fullchain”) e apontados pela diretiva ssl_certificate; a chave privada que você gerou anteriormente é apontada separadamente pela diretiva ssl_certificate_key. O procedimento completo (montagem da fullchain, edição do bloco do servidor, testes e recarregamento) é abordado em nosso tutorial de instalação de SSL no NGINX.

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.