Ir para conteúdo
  • Cadastre-se
Entre para seguir isso  
fredericopissarra

Testando os conjuntos de algorítmos de criptografia disponíveis num site

Posts Recomendados

Postado (editado)

Quando se lida com SSL/TLS, lidamos com algoritmos de troca-de chaves, autenticação, algoritmos de criptografia assimátrico e simétrico. Mas, nem todos os sites estão up to date com os algoritmos mais modernos. Eis uma maneira de testar isso via script, bash, usando o OpenSSL mais novinho:

#!/bin/bash

#
# list-ssl-ciphers script.
# Testa os conjuntos de algoritmos válidos para um site.
#

if [ $# -ne 1 ]; then
  echo -e "\e[1;33mUsage\e[0m: $(basename $0) <sitename>"
  exit 1
fi

SERVER=$1
ciphers=$(openssl ciphers 'ALL:eNULL' | sed -e 's/:/ /g')

echo -e "\e[1;33mObtaining cipher list from \e[1;37m$(openssl version)\e[0m."

for cipher in ${ciphers[@]}
do
  echo -n Testing $cipher...
  result=$(openssl s_client -cipher "${cipher}" \
                            -connect "${SERVER}:443" \
                            -servername "${SERVER}" < /dev/null 2>&1)
  if [[ "${result}" =~ ":error:" ]] ; then
    error=$(echo -n $result | cut -d':' -f6)
    echo -e "\e[1;31mNO ($error)\e[0m"
  else
    if [[ "${result}" =~ "Cipher is ${cipher}" || \
          "$result" =~ "Cipher +:" ]] ; then
      echo -e "\e[1;32mYES\e[0m"
    else
      echo -e "\e[1;33mUNKNOWN RESPONSE\e[0m\n${result}"
    fi
  fi
done

Exemplo de uso (a lista é grande) com www.mentebinaria.com.br:

terminal.thumb.png.fa2a7cdf6e53f04f8b23f866d9b9adac.png

[]s
Fred

Editado por fredericopissarra
  • Agradecer 3
  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

PS: O redirecionamento de /dev/null no comando s_client do openssl serve para ignorar o restante da requisição https ao site. O mesmo efeito poderia ser obtido com:

echo -n | openssl s_client ... 2>&1

Mas, acho o redirecionamento mais elegante....

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

A listagem dos algoritmos, de maneira mais legível, pode ser obtida com:

openssl ciphers -v

Notem que existem 4 (Kx [Key eXchange], Au [key AUthentication), Enc [ENCoding] e Mac [Message Authentication Code]).

Se o site não suporta ECDH (Elliptic Curve Diffie-Helman) ou, no mínimo, DHE (Diffie-Helman Ephemeral) como key-exchange, ECDSA (Elliptic Curve Digital Signature Algorithm) ou RSA como authentication, AES-128, AES-256 ou AES-384 como encoding e SHA-256, SHA-384 ou SHA-512 como MAC... descondie da segurança do site...

DH, puro e MAC MD5 ou SHA-1 não deveriam ser aceitos sem desconfiança...

Editado por fredericopissarra

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×