Verificando o domínio de um certificado no OpenSSL
Eu preciso verificar o domínio de um certificado X509 usando o C-land OpenSSL.
Meu entendimento é que a biblioteca não faz isso para mim e eu tenho que implementar aproximadamente o seguinte algoritmo:
Se o campo dnsName da extensão subjectAlternativeName estiver presente, definaname
para esse valor.Caso contrário, definaname
para o campo CN do assunto.Compararname
contra o nome do host solicitado, permitindo que cada asterisco combine [A-Za-z0-9 _] +, mas não 'ponto' (.).Parece-me que deve haver muitos códigos para fazer isso, mas não encontrei nenhum.
Alguém pode encontrar um exemplo disso? Ou, alternativamente, checar meu algoritmo?
EDIT: Isso é o que eu vim com:https://gist.github.com/2821083. Parece realmente estranho que o OpenSSL deixe isso para o código de chamada.