Gerar um Certificate Signing Request (CSR) em conformidade com o formato PKCS#10 é um passo essencial para solicitar um certificado digital assinado por uma Autoridade Certificadora (CA). Este pedido contém a chave pública e os dados de identificação da entidade requerente, sendo assinado com a respetiva chave privada.


> gerar_csr

Para gerar um CSR com base numa chave privada existente, pode utilizar o seguinte comando OpenSSL:

openssl req -new -key chave_privada.key -out pedido.csr

O OpenSSL irá pedir-lhe que introduza manualmente os campos da identificação:

Country Name (2 letter code) []:PT
State or Province Name (full name) []:Portugal
Locality Name (eg, city) []:Lisboa
Organization Name (eg, company) []:Exemplo
Organizational Unit Name (eg, section) []:TI
Common Name (e.g. server FQDN or YOUR name) []:exemplo.com
Email Address []:[email protected]

Também é possível gerar o CSR sem qualquer interação manual, com todos os campos definidos diretamente na linha de comando.

openssl req -new -key chave_privada.key -out pedido.csr \
        -subj "/C=PT/L=Lisboa/O=Exemplo/OU=TI/CN=exemplo.com"

Em certificados TLS modernos, os nomes DNS devem ser indicados através da extensão Subject Alternative Name (SAN). O campo Common Name (CN) pode continuar a existir na identificação do sujeito do pedido, mas não deve ser tratado como identificador suficiente do serviço.

Finalmente, é possível gerar o CSR utilizando um ficheiro de configuração, o que permite definir todos os campos de identificação de forma estruturada e sem intervenção manual.

Ficheiro de configuração req.conf:

[ req ]
prompt             = no
distinguished_name = dn
req_extensions = v3_req

[ dn ]
C             = PT
ST            = Portugal
L             = Lisboa
O             = Exemplo
OU            = TI
CN            = exemplo.com
emailAddress  = [email protected]

[ v3_req ]
subjectAltName = @alt_names

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

Com este ficheiro, o CSR pode ser gerado com o seguinte comando:

openssl req -new -key chave_privada.key \
        -out pedido.csr \
        -config req.conf

Neste exemplo, o CSR inclui a extensão SAN com os nomes exemplo.com e www.exemplo.com, permitindo à Autoridade Certificadora emitir um certificado adequado para utilização em serviços TLS.


> conclusão

A geração de um pedido de assinatura de certificado com o OpenSSL constitui um passo fundamental na obtenção de certificados X.509 emitidos por uma Autoridade Certificadora. Este processo assegura que a chave privada nunca é exposta, uma vez que apenas a chave pública e os atributos do sujeito são incluídos no pedido.

A possibilidade de automatização, seja através da linha de comando ou de ficheiros de configuração, permite uma integração mais eficiente em ambientes de gestão de certificados, reduzindo erros e aumentando a consistência dos pedidos.

Em certificados TLS, a inclusão correta da extensão SAN é particularmente importante, uma vez que os nomes DNS associados ao serviço devem constar nessa extensão e não depender apenas do campo Common Name.

> status: signed
> exit 0