Usando openSSL, em um cliente TLS, especifiquei um conjunto de criptografia exclusivo com SSL_CTX_set_cipher_list().
Quando uso o wireshark para ver as mensagens, vejo na mensagem Client Hello que os conjuntos de criptografia permitidos são aqueles que especifiquei.
Mas se eu olhar para a Extensão: algoritmos de assinatura, vejo que o cliente parece aceitar um grande número de algos, incluindo alguns que não me parecem muito seguros, como o MD5.
Como posso mudar esse comportamento?
Responder1
(Encontrei pesquisando outra coisa. Não sei se a segurança, ou mesmo o SO, seria melhor.)
Na versão 1.0.2 (apenas) há novidades SSL_[CTX_]set1[_client]_sigalgs[_list]
para isso. Ainda não vi nenhum documento em nenhuma versão, mas aparentemente está em "master" (ou seja, o "tronco" de desenvolvimento) no site emhttps://www.openssl.org/docs/manmaster/ssl/SSL_CTX_set1_sigalgs.htmlentão, presumivelmente, será em versões futuras.
Nas versões anteriores, você pode definir um retorno de chamada de verificação ou apenas verificar a cadeia de resultados e rejeitar qualquer certificado ou cadeia usando MD5 ou RSA <= 1024 ou ECC usando curvas suspeitas de backdoors da NSA ou qualquer outra coisa que você não goste, como CA política que diz "nós odiamos gatos".