FolioPierEstudos de TI

Certificados digitais

Nota 8 de 37 · 7 min de leitura
Nesta página
  1. O que é um certificado digital
  2. A cadeia de confiança
  3. Certificado do servidor e certificado do cliente
  4. Os tipos A1 e A3
  5. Onde o certificado fica no Windows
  6. Validade, renovação e revogação
  7. As falhas mais comuns

Uma integração que funcionava pode parar no dia em que um certificado vence, e um serviço fiscal pode recusar a conexão mesmo com a Internet em ordem. O certificado digital participa da proteção das conexões, da identificação de quem chama e da assinatura de documentos, e cada um desses usos falha de um jeito diferente.

O que é um certificado digital

O certificado digital é um documento eletrônico que associa uma identidade, como o nome de um site ou o CNPJ de uma empresa, a uma chave pública. O titular do certificado guarda a chave privada correspondente, que não sai do controle dele. O que a chave privada assina só confere com a chave pública do mesmo par, e essa relação permite comprovar a identidade do titular.

Uma autoridade certificadora emite o certificado depois de conferir a identidade do titular e assina o certificado com a própria chave. O certificado traz, entre outros dados, o titular, o emissor, o período de validade, um número de série e os usos permitidos, como a autenticação de um servidor ou a assinatura de documentos.

A cadeia de confiança

Um programa confia em um certificado quando consegue montar uma cadeia até uma autoridade em que já confia:

  • o certificado final, do serviço ou da empresa, assinado por uma autoridade intermediária;
  • a autoridade intermediária, assinada pela autoridade raiz;
  • a autoridade raiz, que assina o próprio certificado e fica no repositório de autoridades confiáveis do sistema operacional ou do programa.

Quando falta um elo, ou quando a raiz não está no repositório de confiança da máquina, a verificação falha mesmo com o certificado dentro da validade. A instalação da cadeia do emissor, pelo procedimento do fornecedor, resolve esse caso. No Brasil, a ICP-Brasil, a infraestrutura de chaves públicas brasileira, tem a própria autoridade raiz, e as autoridades certificadoras ligadas a ela emitem os certificados usados nos serviços fiscais e em muitos serviços do governo.

Certificado do servidor e certificado do cliente

Em uma conexão HTTPS, o serviço apresenta o certificado do servidor, e o programa que chama confere a cadeia, a validade e o nome. O nome do endereço chamado precisa constar no certificado. Um certificado emitido para api.example.com não vale para pagamentos.example.com.

Em algumas integrações, o serviço também exige o certificado do cliente, e os dois lados se identificam na mesma conexão, no mTLS. Os serviços fiscais e muitas APIs bancárias trabalham assim. Nesses casos, o programa precisa ter acesso ao certificado e à chave privada no momento da conexão.

O mesmo certificado do cliente pode ter outro uso, a assinatura digital de um documento, como o XML de uma nota fiscal. A assinatura comprova a autoria e a integridade do documento, e a conexão protegida comprova a identidade de quem transmite. Os dois usos são diferentes, e uma falha em um deles não indica falha no outro.

Os tipos A1 e A3

Na ICP-Brasil, os certificados mais comuns no comércio são de dois tipos:

  • A1: o certificado e a chave privada ficam em um arquivo protegido por senha, instalado no computador que usa o certificado. A validade máxima é de um ano.
  • A3: a chave privada fica em um dispositivo criptográfico, como um token USB, um cartão com chip ou um equipamento do provedor, no caso do certificado em nuvem. A validade máxima é de cinco anos.

O arquivo do A1 costuma ter a extensão .pfx ou .p12. Uma cópia desse arquivo, junto com a senha, permite usar o certificado em outra máquina, e por isso o arquivo e a senha recebem o mesmo cuidado de uma credencial. O A3 depende do dispositivo conectado e do programa do fabricante, e um token desconectado ou bloqueado impede a assinatura e a conexão.

Onde o certificado fica no Windows

No Windows, os certificados ficam em repositórios separados:

  • o repositório do usuário atual, aberto pelo comando certmgr.msc, com os certificados instalados para a conta conectada;
  • o repositório do computador local, aberto pelo comando certlm.msc, com os certificados disponíveis para a máquina e para os serviços.

Um certificado A1 importado no repositório de um usuário não aparece para outro usuário nem para um serviço do Windows que roda com outra conta. Por isso, o mesmo programa pode funcionar quando aberto pela pessoa conectada e falhar quando roda como serviço. Além de enxergar o certificado, a conta que executa o programa precisa de permissão para usar a chave privada.

Validade, renovação e revogação

Um certificado vale entre a data de início e a data de fim gravadas nele. A conferência usa o relógio da máquina, e por isso uma data errada no computador faz um certificado válido parecer vencido ou ainda não válido.

A renovação gera um certificado novo, com outro número de série e, em geral, outro par de chaves. O certificado novo precisa ser instalado e selecionado na configuração de cada programa que usa o certificado. O certificado vencido continua no repositório, e um programa que escolhe o certificado pelo nome do titular pode continuar usando o antigo.

Um certificado também pode ser revogado antes do vencimento, por exemplo depois da perda do token ou da exposição do arquivo. A autoridade certificadora publica as revogações, e os serviços recusam um certificado revogado.

As falhas mais comuns

  • Certificado vencido: a data de fim já passou, no certificado do serviço ou no do cliente.
  • Cadeia não confiável: a raiz ou uma autoridade intermediária do emissor não está no repositório de confiança da máquina.
  • Nome divergente: o endereço chamado não consta no certificado apresentado pelo serviço.
  • Certificado errado: o programa usa um certificado de outra empresa, um certificado antigo ou um certificado sem o uso exigido.
  • Chave privada inacessível: a conta que executa o programa não alcança o certificado ou não tem permissão para usar a chave, ou o token não está conectado.
  • Relógio incorreto: a data da máquina faz a validade parecer errada.
  • Versão do TLS: o sistema operacional ou o programa não oferecem a versão do TLS exigida pelo serviço.

A mensagem de erro costuma indicar qual dessas condições falhou. Desligar a verificação do certificado para fazer uma falha desaparecer deixa a comunicação exposta e não corrige a causa.

No suporte

Diante de uma falha de certificado, convém identificar qual certificado está envolvido, o do serviço ou o do cliente, e em qual uso, a conexão ou a assinatura. Em seguida, convém conferir a validade, a cadeia, o titular, o repositório em que o certificado está instalado, a conta que executa o programa e o relógio da máquina. A senha do certificado A1 fica mascarada, como a de qualquer credencial.

Para guardar

  • O certificado associa uma identidade a uma chave pública, e o titular guarda a chave privada.
  • A confiança depende de uma cadeia até uma autoridade raiz conhecida pela máquina.
  • O certificado do servidor identifica o serviço, e o certificado do cliente identifica quem chama.
  • O A1 é um arquivo instalado no computador, com validade de até um ano, e o A3 fica em um dispositivo, com validade de até cinco anos.
  • A renovação gera um certificado novo, que precisa ser instalado e selecionado em cada programa.
A emissão de notas funciona quando o programa é aberto pela pessoa conectada e falha quando o mesmo programa roda como serviço do Windows. O que investigar?

O repositório em que o certificado foi instalado e a conta que executa o serviço. Um certificado importado no repositório de um usuário não aparece para um serviço que roda com outra conta, e essa conta também precisa de permissão para usar a chave privada.

O certificado da empresa foi renovado ontem, e hoje a integração recusa a conexão por certificado vencido. O que essa situação sugere?

Que o programa continua usando o certificado antigo. O certificado novo precisa estar instalado e selecionado na configuração, e o certificado vencido, que continua no repositório, pode estar sendo escolhido no lugar dele.

Publicado a partir do Obsidian · FolioPier