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


