Ir para o conteúdo
AZ Tools

Decodificador de CSR (PKCS#10)

Decodifica no seu navegador uma requisição de assinatura de certificado PKCS#10 e mostra o que você está de fato prestes a enviar a uma autoridade certificadora. Você obtém o sujeito como nome distinto, os nomes alternativos do sujeito, o algoritmo e o tamanho da chave pública, o algoritmo de assinatura, a senha de desafio se houver, e as extensões que a requisição pede à CA para incluir. Ele também verifica a assinatura da própria requisição. Uma CSR é autoassinada com a chave privada correspondente à pública que ela contém — é isso que prova a uma CA que quem a enviou possui a chave — então a checagem não precisa de nada além da requisição, e uma falha significa que os bytes foram alterados depois da assinatura ou que a chave não confere. O aviso que mais vale ter é o do nome alternativo do sujeito. Os navegadores deixaram de honrar o Common Name para casar nomes de host em 2017, então uma CSR que nomeia seu host apenas no CN produz um certificado que falha em todo cliente moderno, e o erro fica invisível até o certificado ser instalado. Isto sinaliza uma requisição sem SAN nenhum, e também o caso mais sutil em que há um CN ausente da lista de SANs, cobrindo um conjunto de nomes diferente do pretendido. RSA abaixo de 2048 bits e assinaturas SHA-1 também são sinalizadas, já que hoje toda CA pública as recusa. Se você colar uma chave privada por engano, ele se recusa a processá-la. Nada é enviado.

Como usar

  1. Cole a CSR, ou solte o arquivo .csr ou .pem sobre a caixa. Ela começa com -----BEGIN CERTIFICATE REQUEST-----.
  2. Confira primeiro a lista de SANs: todo nome de host que o certificado deve cobrir precisa aparecer ali, inclusive o do Common Name.
  3. Confirme que a autoassinatura verifica; se não verificar, gere a requisição de novo em vez de enviá-la.
  4. Leia o tamanho da chave e o algoritmo de assinatura: uma CA pública exige no mínimo RSA de 2048 bits (ou qualquer curva EC) e assinatura SHA-256 ou melhor.
  5. Resolva o que estiver em âmbar antes de enviar, porque uma recusa da CA costuma custar uma ida e volta de horas.

Perguntas frequentes

Por que um certificado precisa de SAN se já tem Common Name?
Porque os clientes pararam de olhar o Common Name. A RFC 2818 o tornou obsoleto para casar nomes de host em 2000, o Chrome removeu o suporte na versão 58 em 2017 e os outros navegadores seguiram; os requisitos base do CA/Browser Forum hoje obrigam a CA a colocar todos os nomes na extensão subjectAltName de qualquer forma. Uma CSR cujo nome de host aparece só no CN será recusada pela CA ou produzirá um certificado que todo navegador moderno rejeita com ERR_CERT_COMMON_NAME_INVALID. As ferramentas continuam exibindo o CN, que é justamente o que torna o erro fácil de passar batido.
O que a autoassinatura de uma CSR prova?
Que quem produziu a requisição possui a chave privada correspondente à pública que ela contém. A requisição é assinada com essa chave, sobre o próprio conteúdo, então uma CA pode verificá-la sem mais nada — é isso que impede alguém de enviar uma CSR com a sua chave pública e obter um certificado em seu nome. Não prova nada sobre a posse do domínio, que a CA verifica em separado. Se a assinatura não verifica, o arquivo foi alterado depois de assinado, o que normalmente significa que se corrompeu no caminho ou foi editado à mão.
É seguro colar uma CSR aqui?
Sim. Uma CSR carrega apenas informação pública — os nomes que você está pedindo e a metade pública do seu par de chaves — e de todo modo é feita para ser entregue a uma CA. Ainda assim, esta página nunca a envia a lugar nenhum: tanto a análise ASN.1 quanto a verificação da assinatura rodam no seu navegador via WebCrypto, o que você pode confirmar carregando a página, desconectando-se da rede e colando uma requisição. A chave privada é outra coisa completamente: não cole uma em lugar nenhum, e se colar aqui, a ferramenta recusa.
Por que às vezes a assinatura não é verificada?
Porque verificar exige que o navegador importe a chave pública, e o WebCrypto suporta um conjunto fixo de algoritmos. RSA e ECDSA nas curvas NIST funcionam em todo lugar; Ed25519 funciona em navegadores recentes e é pulado nos antigos. Quando o tipo de chave não pode ser importado, a ferramenta diz que a assinatura não foi verificada em vez de dar a entender que passou — uma assinatura não verificada e uma válida são coisas muito diferentes, e confundi-las seria a única coisa realmente perigosa que esta ferramenta poderia fazer.
Posso decodificar um certificado aqui também?
Não — um certificado e uma requisição de assinatura são estruturas diferentes, e esta ferramenta lê apenas requisições PKCS#10. Uma CSR é o que você envia a uma CA; um certificado é o que volta, e carrega um emissor, uma janela de validade e a assinatura da CA, nada do que existe numa requisição. Cole um bloco -----BEGIN CERTIFICATE----- no decodificador de certificados.
Para que serve a senha de desafio?
É um atributo opcional da especificação PKCS#10 original, pensado como segredo compartilhado que permitiria depois pedir à CA a revogação do certificado. Hoje quase nenhuma CA pública o usa — a revogação é tratada pela conta com que você se autenticou — mas alguns fluxos corporativos e de inscrição SCEP ainda exigem um, e os serviços de certificado da Microsoft leem esse valor. Se estiver definido, esta ferramenta o mostra, o que vale saber porque ele viaja em claro dentro da requisição.

Ferramentas relacionadas