Como conferir um CSR
- Cole a solicitação, de
-----BEGIN CERTIFICATE REQUEST-----até a linha END correspondente, ou arraste o arquivo.csr/.reqpara a caixa. - Confira Titular, Nomes alternativos (SAN) e Chave pública no cartão.
- Se quiser, cole a chave privada abaixo do CSR. O cartão dela mostra só o tipo e o tamanho da chave, e um Pin SPKI SHA-256 que você pode comparar com o do CSR.
- Use Copiar PEM ou Baixar .der se o portal da CA quiser a solicitação em outro formato.
O que há dentro de uma solicitação de assinatura de certificado
Um CSR (PKCS#10) é pequeno: um nome de titular, uma chave pública, atributos opcionais e uma assinatura sobre tudo isso. O decodificador lista assim:
| Campo | Observações |
|---|---|
| Titular | C=US, O=Example Corp, CN=app.example.com. Em certificados validados por domínio, a CA mantém só o que validou, então os campos de organização geralmente são descartados. |
| Versão | Sempre v1 no PKCS#10. |
| Chave pública | Tipo e tamanho, por exemplo RSA 2048 ou EC P-256. É a parte que vai para o certificado sem alteração. |
| Algoritmo de assinatura | Geralmente sha256WithRSAEncryption ou ecdsa-with-SHA256. |
| Nomes alternativos (SAN), Uso da chave, Uso estendido da chave | Extensões solicitadas. A CA pode respeitá-las, reescrevê-las ou descartá-las. |
| Atributos | Outros atributos PKCS#9. Um challengePassword aparece como definido, com o valor oculto. |
| Pin SPKI SHA-256 | Hash da chave pública. O certificado emitido terá o mesmo pin. |
Erros que vale pegar antes de enviar
- Sem nomes alternativos (SAN). Navegadores ignoram o CN ao comparar hostnames. CAs públicas costumam copiar o CN para o SAN por você; CAs internas muitas vezes não, e o resultado é um certificado que falha com erro de nome.
- Um nome faltando.
www.example.comeexample.comsão duas entradas diferentes. Um curinga*.example.comnão cobre o próprioexample.com. - Chave pequena demais. CAs publicamente confiáveis exigem RSA de pelo menos 2048 bits. Um CSR RSA 1024 será rejeitado.
- Chave errada. Um CSR gerado em outro servidor, ou a partir de um arquivo de chave antigo, produz um certificado que o seu servidor não consegue usar. Compare os pins.
- Erros de digitação no titular. Baratos de corrigir agora, caros depois que uma validação OV ou EV já rodou.
A ferramenta lê o CSR, mas não confere a autoassinatura dele. Uma solicitação truncada ou editada ainda pode ser decodificada, então rode openssl req -verify na dúvida.
Como criar e verificar um CSR com OpenSSL
Uma nova chave RSA e um CSR com dois hostnames em um passo só (OpenSSL 1.1.1 ou posterior, por causa do -addext):
openssl req -new -newkey rsa:2048 -nodes -keyout app.key -out app.csr \
-subj "/CN=app.example.com" \
-addext "subjectAltName=DNS:app.example.com,DNS:www.app.example.com"
Confira o CSR, incluindo a assinatura, e confirme que ele corresponde à chave:
openssl req -in app.csr -noout -text -verify
diff <(openssl req -in app.csr -noout -pubkey) <(openssl pkey -in app.key -pubout) && echo "key matches"
A linha com -verify imprime Certificate request self-signature verify OK para uma solicitação intacta. Mais receitas de linha de comando na página de OpenSSL.
Como um CSR aparece em Base64
Um CSR é DER embrulhado em PEM, como um certificado. Uma solicitação RSA-2048 tem mais ou menos 650–700 bytes de DER, então o Base64 dela começa com MIIC; uma solicitação EC P-256 fica perto de 300 bytes e começa com MIIB. Se o que você recebeu começa com MIIC mas o cabeçalho diz CERTIFICATE, é um certificado. Cole no decodificador de certificados; o mesmo widget lida com os dois e diz qual encontrou.
Perguntas frequentes
Como ver quais domínios estão em um CSR?
Cole o CSR e olhe Nomes alternativos (SAN). É essa lista que decide quais hostnames o certificado vai cobrir; os navegadores ignoram o CN do titular. Se a linha não aparecer, a solicitação não traz extensão SAN.
Como saber se um CSR corresponde à minha chave privada?
Cole o CSR e a chave privada juntos. Se os dois cartões mostrarem o mesmo Pin SPKI SHA-256, eles compartilham o mesmo par de chaves. Com OpenSSL, compare openssl req -in app.csr -noout -pubkey com openssl pkey -in app.key -pubout.
Um CSR contém a chave privada?
Não. Um CSR guarda a chave pública, os nomes solicitados e uma assinatura feita com a chave privada para provar que você a tem. É seguro enviá-lo a uma CA, e a chave privada deve ficar no servidor.
O que é NEW CERTIFICATE REQUEST no cabeçalho?
Um rótulo mais antigo, usado pelo keytool do Java e por algumas ferramentas do Windows. O conteúdo é a mesma estrutura PKCS#10, e o decodificador lê como qualquer outro CSR.