Jump to content
Sign in to follow this  
fredericopissarra

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

Recommended Posts

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

Edited by fredericopissarra
  • Agradecer 3
  • Curtir 2

Share this post


Link to post
Share on other 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....

Share this post


Link to post
Share on other sites

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...

Edited by fredericopissarra

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...