Untitled
unknown
plain_text
a year ago
2.1 kB
4
Indexable
#!/bin/bash
# Usage: ./check_tls_ssl.sh <domain or IP> <port>
DOMAIN=$1
PORT=$2
# Check if domain and port are provided
if [ -z "$DOMAIN" ] || [ -z "$PORT" ]; then
echo "Usage: $0 <domain or IP> <port>"
exit 1
fi
# List of all SSL/TLS versions to check
VERSIONS=("ssl2" "ssl3" "tls1" "tls1_1" "tls1_2" "tls1_3")
# List of TLS versions for cipher checking
CIPHER_VERSIONS=("tls1_2" "tls1_3")
echo "Checking support for all SSL/TLS versions on $DOMAIN:$PORT"
echo "---------------------------------------------------------------"
# Check support for each SSL/TLS version
for VERSION in "${VERSIONS[@]}"; do
echo "Checking $VERSION..."
openssl s_client -connect "$DOMAIN:$PORT" -$VERSION < /dev/null > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "$VERSION is supported."
else
echo "$VERSION is not supported."
fi
done
echo "---------------------------------------------------------------"
# Get list of all possible ciphers
CIPHERS=$(openssl ciphers 'ALL:COMPLEMENTOFALL' | sed -e 's/:/ /g')
# Check supported ciphers only for TLS 1.2 and TLS 1.3
for VERSION in "${CIPHER_VERSIONS[@]}"; do
echo "Checking supported cipher suites for $VERSION..."
SUPPORTED_CIPHERS=()
for CIPHER in $CIPHERS; do
# Use -ign_eof to ensure the connection stays open until handshake completes
RESULT=$(echo | openssl s_client -cipher "$CIPHER" -connect "$DOMAIN:$PORT" -$VERSION -ign_eof 2>/dev/null)
# Check if the handshake was successful by looking for 'Cipher is' in the output
if echo "$RESULT" | grep -q "Cipher is $CIPHER"; then
SUPPORTED_CIPHERS+=("$CIPHER")
fi
done
# Output supported ciphers for the version
if [ ${#SUPPORTED_CIPHERS[@]} -gt 0 ]; then
echo "Supported cipher suites for $VERSION:"
for CIPHER in "${SUPPORTED_CIPHERS[@]}"; do
echo " - $CIPHER"
done
else
echo "No supported cipher suites found for $VERSION."
fi
echo "---------------------------------------------------------------"
done
echo "SSL/TLS version and cipher suite check completed."Editor is loading...
Leave a Comment