Pesquisa de transparência de certificados
Cada certificado de confiança pública emitido para um domínio é escrito em registos públicos —esta pesquisa lê-os de volta para si. Introduza um domínio e veja o que o crt.sh registou para ele e para os seus subdomínios: quem emitiu cada certificado, que nomes cobre e quando era válido. É a auditoria que encontra os certificados de que se esqueceu —e os que nunca pediu.
Quer que isto seja vigiado continuamente? Vigie isto grátis com o myeventwatch — alertas de expiração e indisponibilidade, sem cartão.
O que a pesquisa mede
A transparência de certificados transforma a emissão de certificados de uma transação privada num registo público. Quando uma autoridade de certificação emite um certificado para um nome público, submete o certificado a vários registos CT, e os navegadores recusam certificados que não estejam registados. O efeito secundário é um presente para os defensores: o histórico completo de emissão de cada domínio está em público, à espera de ser lido. A página chama GET /api/check/cert-search no servidor da sysosx, que faz um único pedido ao crt.sh —o índice público desses registos— para o domínio e tudo o que está sob ele, normaliza a resposta, ordena-a do mais recente para o mais antigo e guarda-a em cache durante uma hora. São mostradas até 200 entradas; um domínio com mais recebe um aviso de truncamento e o total real, nunca um corte silencioso.
Leia o resultado como um inventário, não como um veredito. A pergunta produtiva para cada entrada é «qual dos nossos sistemas pediu isto?». As infraestruturas modernas emitem certificados a partir de mais lugares do que os seus proprietários imaginam: o alojamento web, a CDN, o fornecedor de correio, o criador de sites da equipa de marketing, um ingress do Kubernetes num cluster que alguém montou no ano passado. A maioria é legítima e vários serão novidade para si de qualquer forma —o que já é útil, porque um inventário de certificados que nunca viu não pode fazer parte do plano de renovação ou revogação de ninguém. As entradas que mais importam são as que ninguém consegue associar a um sistema: um emissor desconhecido, um subdomínio desconhecido, uma data de emissão sem nenhuma implementação por perto. São raras, e são exatamente o que a CT foi desenhada para revelar.
Três ferramentas, três perguntas
Esta pesquisa responde «o que já foi emitido alguma vez?». O verificador SSL responde «o que é que o servidor apresenta agora mesmo?» com um handshake ao vivo —a única forma de saber o que os visitantes realmente recebem. O classificador SSL responde «quão bem está configurado o TLS desse servidor?» —versões de protocolo, sigilo perfeito para a frente, HSTS, com uma nota em letras. E o analisador de certificados SSL do navegador lê um ficheiro de certificado que já tem. Uma renovação que existe nos registos mas nunca foi implementada aparece aqui e não no verificador; um servidor que apresenta um certificado antigo aparece no verificador e não aqui. Quando discordam, cada um diz a sua própria verdade —use o que corresponder à sua pergunta.
Perguntas frequentes
O que é a transparência de certificados, num parágrafo?
Desde 2018, os navegadores exigem que os certificados de confiança pública sejam publicados em registos de transparência de certificados (CT): listas públicas, só de acréscimo, de cada certificado que uma CA emite. Os registos existem para que a emissão indevida não se possa esconder: se aparecer um certificado para o seu domínio que nunca pediu, ele é visível para qualquer pessoa que olhe, incluindo você. Esta ferramenta olha em seu nome, através do crt.sh, o índice público mais conhecido desses registos.
Em que é que isto difere do verificador SSL e do classificador SSL?
Três perguntas diferentes. O verificador SSL pergunta que certificado um servidor apresenta agora mesmo, num handshake ao vivo. O classificador SSL audita como o TLS desse servidor está configurado —protocolos, cifras, HSTS— e classifica-o. Esta pesquisa pergunta o que já foi emitido alguma vez para o domínio, segundo os registos públicos. Pode revelar certificados que as ferramentas ao vivo não conseguem: certificados de staging esquecidos, certificados de CAs que a sua organização já não usa e —o caso para o qual a CT foi criada— certificados que ninguém da sua equipa pediu de todo.
Porque é que isto é executado a partir do servidor e não no meu navegador?
O analisador de certificados do navegador deste site também oferece uma consulta ao crt.sh, e diz claramente que o seu funcionamento depende dos cabeçalhos de origem cruzada do crt.sh: um navegador só pode ler o que um serviço de terceiros lhe permite ler. Um pedido do lado do servidor não tem nenhuma política de origem cruzada para satisfazer, por isso a pesquisa aqui funciona da mesma forma todas as vezes. A troca é a habitual: o domínio que introduz é enviado para o crt.sh a partir do servidor da sysosx (e, durante uma hora, a resposta fica em cache), algo que a página declara em vez de esconder.
Vejo certificados que não reconheço. Devo entrar em pânico?
Ainda não. A maioria das entradas desconhecidas é banal: um fornecedor de alojamento ou uma CDN a emitir em seu nome (Cloudflare, um balanceador de carga, um criador de sites), uma autoridade de certificação que a sua organização deixou de usar, ou um sistema de renovação automática que alguém configurou e esqueceu. Percorra a lista por emissor e data e associe cada entrada a um sistema que opera ou a um fornecedor a quem paga. O pânico —bem, a investigação urgente— é para o resto: um certificado de uma CA que ninguém usa, que cobre nomes que ninguém opera, emitido numa altura em que ninguém implementou nada. Isso é ou um canto esquecido da sua própria infraestrutura que merece ser documentado, ou a emissão indevida que a CT existe para apanhar, e deve ser perseguido até ficar explicado.
Porque é que o resultado fica em cache durante uma hora, e porque pode a pesquisa falhar?
Porque o crt.sh é um serviço público gratuito, famosamente lento sob carga, e o histórico de certificados muda em dias e não em minutos: uma hora de cache não custa nada em frescura e evita que esta ferramenta some carga ao crt.sh: no máximo uma consulta a montante por domínio e hora. Quando o crt.sh está em baixo ou demasiado lento, a pesquisa diz isso com um erro explícito em vez de devolver uma lista vazia, porque «não foram encontrados certificados» e «a pesquisa nos registos falhou» são conclusões opostas e só uma delas é verdadeira.