Problema
Criei um certificado por meio de serviços de certificado AD, mas ele apresenta erro "The issuer of this certificate could not be found."
apesar de toda a cadeia estar presente no PFX.
Contexto
Criei um certificado de assinatura de código do servidor AD Certificate Services da nossa organização, usando o code signing
modelo padrão e exportando o certificado criado (com chave privada exportável).
Estamos tendo problemas ao usar este certificado para assinar código, apesar de nosso certificado raiz ser confiável em todos os dispositivos corporativos.
Na investigação, se eu converter o PFX em um PEM (com extensão de arquivo .CER
) e abri-lo em um editor de texto, posso ver os certificados de cliente, intermediário e raiz listados no arquivo PEM. No entanto, se eu clicar duas vezes neste arquivo CER (ou seja, para abri-lo crypto shell extensions
), a guia do caminho do certificado mostrará apenas o certificado do cliente e mostrará o status do certificado como "The issuer of this certificate could not be found."
.
Olhando para o emissor do cliente, ele nomeia corretamente o certificado intermediário.
Se eu copiar os certificados intermediários e raiz do arquivo PEM para o seu próprio, salve-o como .CER e abra-o, então os certificados intermediários e raiz serão listados corretamente. O issuer
do cliente corresponde exatamente ao issued to
do intermediário; e o issuer
do cliente corresponde exatamente ao subject name
do intermediário.
Para converter PFX em PEM estou usandoopenssl.exe pkcs12 -in "mycert.pfx" -out "mycert.cer" -nokeys -passin "pass:mypassword"
A extensão Crypto Shell mostra apenas o primeiro certificado do arquivo. Os outros certificados de CA intermediários na cadeia precisam estar acessíveis ao verificador (o computador onde você está verificando isso) a partir do repositório ou instalados no armazenamento de Autoridades de Certificação Intermediárias no computador onde você está executando a extensão Crypto Shell.
No certificado de entidade final emitido por uma CA da Microsoft, você deverá ver a extensão Authority Information Access, que deve conter a URL onde o emissor está disponível para download. Quando disponíveis, as extensões Crypto Shell podem baixar o certificado CA intermediário deste URL e evitar confusão.
Alternativamente, para fins de teste, você pode instalar o certificado CA intermediário no armazenamento de Autoridades de Certificação Intermediárias do computador onde você está executando a extensão Crypto Shell.
Observe que você não precisa instalar os certificados de CA intermediários em todos os armazenamentos de Autoridades de Certificação Intermediárias de todos os seus computadores (como você faz para seu certificado de CA raiz), pois no uso real, os certificados de CA intermediários devem ser apresentados no final. entidade para as partes confiantes como parte do protocolo. Por exemplo, quando um certificado TLS é usado por um servidor web (por exemplo, IIS) para HTTPS, o servidor deve enviar seu certificado junto com todos os certificados CA intermediários (sendo a raiz opcional). Da mesma forma, um pacote assinado por um certificado de assinatura de código deve incluir todos os certificados, exceto o certificado CA raiz (este último sendo novamente opcional).
Portanto, não há nada de errado com seus certificados - a extensão Crypto Shell simplesmente não consegue encontrar os certificados de CA intermediários.