bg-tutorials

Como Gerar um CSR no lighttpd

Este tutorial mostra como gerar um CSR no lighttpd usando a linha de comando do OpenSSL no mesmo servidor que executa o servidor web lighttpd. Você criará dois ficheiros num único comando: uma nova chave privada e o CSR (Certificate Signing Request) correspondente, que submete à sua Autoridade Certificadora.

Os passos abaixo funcionam em todas as distribuições Linux modernas que empacotam o lighttpd (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Fedora, openSUSE, Alpine), já que cada uma vem com o OpenSSL 1.1.1 ou OpenSSL 3.x. Ambas as versões assinam o pedido com SHA-256 por padrão, portanto não precisa adicionar nenhuma flag de digest. O mesmo comando também funciona no FreeBSD e no macOS com lighttpd.

Passo 1: Conecte-se ao seu servidor lighttpd

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 utilizador e o host pelos seus:

ssh your-user@your-lighttpd-server

Gere o CSR no mesmo servidor que irá hospedar o certificado. A chave privada é criada junto do CSR e deve permanecer nesse servidor, portanto executar o comando no seu portátil e depois copiar a chave para outro lado anula o propósito. Também pode ser útil trabalhar num diretório dedicado que consiga localizar facilmente mais tarde, por exemplo:

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

Passo 2: Gere a chave privada e o CSR

Se já gerou o seu CSR com outra ferramenta, avance para instalar o certificado no lighttpd.

Execute o seguinte comando do OpenSSL. Ele cria uma chave RSA de 2048 bits e um CSR num único passo, com o assunto e os Subject Alternative Names (SANs) fornecidos diretamente na linha de comando, 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 para certificados públicos; pode usar rsa:4096 para uma chave maior, ou mudar para ECDSA (ver abaixo).
  • -nodes deixa a chave privada sem encriptação, para que o lighttpd a possa ler no arranque sem pedir uma frase-passe.
  • -keyout e -out nomeiam os ficheiros 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 SAN, portanto inclua também o Common Name aqui.

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

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"

O lighttpd suporta certificados RSA e ECDSA através do mod_openssl, e pode disponibilizar ambos no mesmo socket listando dois pares de diretivas ssl.pemfile e ssl.privkey.

Se preferir responder às perguntas campo a campo, execute openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr sem -subj e sem -addext. O OpenSSL irá perguntar por cada campo, um a um. 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 registo da sua organização.
  • State or Province Name (ST): o nome completo, por exemplo Tennessee. Não abrevie.
  • Locality Name (L): a cidade ou localidade, por exemplo Nashville.
  • Organization Name (O): o nome oficial registado da sua empresa, por exemplo Your Company LLC. Para certificados de Validação de Domínio, pode inserir NA.
  • Organizational Unit Name (OU): este campo está obsoleto e é ignorado pelas CAs públicas. Deixe-o 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. Pode deixar 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 SAN e irão rejeitar (ou substituir silenciosamente) um pedido sem uma delas, portanto o caminho recomendado é o comando com -subj e -addext mostrado acima.

Passo 3: Localize os seus ficheiros

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

ls

Deverá ver dois novos ficheiros:

  • yourdomain.key: a sua chave privada. Mantenha-a no servidor, faça uma cópia de segurança segura, e nunca a envie a ninguém, incluindo à Autoridade Certificadora. Quem detiver a chave pode fazer-se passar pelo seu site.
  • yourdomain.csr: o seu Certificate Signing Request. Este é o ficheiro que submete ao fornecedor de SSL.

Restrinja a chave privada para que apenas o proprietário do ficheiro a possa ler:

chmod 600 yourdomain.key

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

Antes de o submeter, verifique se o CSR contém o assunto e os SANs corretos e se a sua assinatura é válida. Isto decodifica o pedido localmente com o OpenSSL:

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

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

Passo 5: Submeta o seu CSR

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

cat yourdomain.csr

Verá um bloco de texto semelhante a este:

-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(many more lines of base64 characters)...
-----END CERTIFICATE REQUEST-----

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

Se preferir não usar a linha de comando, também pode criar o pedido com o nosso Gerador de CSR online. Note que este gera a chave privada no seu navegador, portanto guarde essa chave você mesmo e transfira-a para o servidor.

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

Passo 6: Instale o certificado no lighttpd

Quando o certificado chegar, coloque o certificado emitido e a sua cadeia intermédia no servidor, junto à chave privada, e depois aponte o lighttpd para eles no bloco de socket TLS. No lighttpd atual, o suporte a TLS está no mod_openssl, e o formato recomendado (desde que o lighttpd 1.4.53 introduziu ssl.privkey) mantém o certificado mais a cadeia num ficheiro e a chave privada num ficheiro separado:

server.modules += ( "mod_openssl" )

$SERVER["socket"] == ":443" {
    ssl.engine  = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
    ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"
}

O ficheiro ssl.pemfile deve conter o seu certificado seguido dos certificados intermédios (crie-o com cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem). O formato antigo de ficheiro único, que concatenava o certificado e a chave privada num único ssl.pemfile, ainda funciona em versões mais antigas, mas o formato de ficheiros separados corresponde à forma como as Autoridades Certificadoras entregam os ficheiros e é a recomendação documentada. Teste a configuração com sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf e reinicie o lighttpd para aplicar a alteração. Para o fluxo de trabalho completo, consulte o nosso guia sobre como instalar um certificado SSL no lighttpd.

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.