Um certificado consiste em uma chave pública, identificando informações e, possivelmente, um ou mais certificados que pertencem à autoridade de certificação emissora.
Há duas formas de estabelecer confiança em um certificado. Você pode estabelecer confiança obtendo uma cópia do certificado diretamente de quem assina, por exemplo, na mídia física, ou por meio de uma transmissão digital segura, como uma transação SSL. Você também pode contar com uma autoridade de certificação para determinar se o certificado de assinatura é confiável.
Para isso, o certificado de assinatura deve ser emitido por uma autoridade confiável no computador em que a assinatura é validada. A maioria dos fabricantes de sistemas operacionais insere os certificados raiz de várias autoridades de certificação no armazenamento confiável do sistema operacional. Os usuários também podem adicionar e remover certificados da armazenagem.
Mesmo se um certificado for emitido por uma autoridade de certificação confiável, você deve decidir se ele pertence a alguém em quem confia. Em muitos casos, essa decisão é transmitida ao usuário final. Por exemplo, quando um aplicativo do AIR é instalado, o instalador do AIR exibe as informações de identificação do certificado do editor ao solicitar ao usuário que verifique se deseja instalar o aplicativo. Em outros casos, pode ser necessário comparar a chave pública ou outras informações do certificado com uma lista de chaves aceitáveis. (Essa lista deve ser protegida, talvez por sua própria assinatura ou no armazenamento local criptografado do AIR, de forma que não seja possível adulterá-la).
Nota:
Embora seja possível optar por confiar no certificado de assinatura sem verificação independente, como quando uma assinatura é "autoassinada", você não obtém muita segurança verificando a assinatura. Sem saber quem criou uma assinatura, a garantia de que ela não tenha sido adulterada é, no mínimo, sem valor. A assinatura pode ser uma falsificação assinada validamente.
Expiração e revogação do certificado
Todos os certificados expiram. Eles também podem ser revogados pela autoridade de certificação que o emitiram se, por exemplo, a chave privada relacionada ao certificado estiver comprometida ou tiver sido roubada. Se uma assinatura for executada com um certificado revogado ou expirado, será reportada como inválida, a menos que um carimbo de data e hora tenha sido incluído como parte dela. Se houver um carimbo de data e hora, a classe XMLSignatureValidator validará a assinatura desde que o certificado esteja válido no momento da assinatura.
Um carimbo de data e hora é uma mensagem digital assinada de um serviço de carimbo de data e hora de que os dados foram assinados em uma data e hora específicas. Eles são emitidos por autoridades de carimbo de data e hora e assinados pelo próprio certificado da autoridade do carimbo de data e hora. O certificado da autoridade de carimbo de data e hora incorporada no carimbo de data e hora deve ser confiável no computador atual para que o carimbo de data e hora seja considerado válido. O XMLSignatureValidator não fornece uma API para designar um certificado diferente para usar na validação do carimbo de data e hora.