2010-02-15 18:47:18 +0000 2010-02-15 18:47:18 +0000
276
276

どのようにして特定のウェブサイトが提供しているSSL/TLS暗号スイートをリストアップするのですか?

特定のウェブサイトが提供しているSSL/TLS暗号スイートのリストをどのようにして取得するのですか?

opensslを試してみましたが、出力を調べると:

$ echo -n | openssl s_client -connect www.google.com:443 
CONNECTED(00000003)
depth=1 /C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
   i:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
 1 s:/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
   i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIQL9+89q6RUm0PmqPfQDQ+mjANBgkqhkiG9w0BAQUFADBM
MQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkg
THRkLjEWMBQGA1UEAxMNVGhhd3RlIFNHQyBDQTAeFw0wOTEyMTgwMDAwMDBaFw0x
MTEyMTgyMzU5NTlaMGgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
MRYwFAYDVQQHFA1Nb3VudGFpbiBWaWV3MRMwEQYDVQQKFApHb29nbGUgSW5jMRcw
FQYDVQQDFA53d3cuZ29vZ2xlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
gYEA6PmGD5D6htffvXImttdEAoN4c9kCKO+IRTn7EOh8rqk41XXGOOsKFQebg+jN
gtXj9xVoRaELGYW84u+E593y17iYwqG7tcFR39SDAqc9BkJb4SLD3muFXxzW2k6L
05vuuWciKh0R73mkszeK9P4Y/bz5RiNQl/Os/CRGK1w7t0UCAwEAAaOB5zCB5DAM
BgNVHRMBAf8EAjAAMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwudGhhd3Rl
LmNvbS9UaGF3dGVTR0NDQS5jcmwwKAYDVR0lBCEwHwYIKwYBBQUHAwEGCCsGAQUF
BwMCBglghkgBhvhCBAEwcgYIKwYBBQUHAQEEZjBkMCIGCCsGAQUFBzABhhZodHRw
Oi8vb2NzcC50aGF3dGUuY29tMD4GCCsGAQUFBzAChjJodHRwOi8vd3d3LnRoYXd0
ZS5jb20vcmVwb3NpdG9yeS9UaGF3dGVfU0dDX0NBLmNydDANBgkqhkiG9w0BAQUF
AAOBgQCfQ89bxFApsb/isJr/aiEdLRLDLE5a+RLizrmCUi3nHX4adpaQedEkUjh5
u2ONgJd8IyAPkU0Wueru9G2Jysa9zCRo1kNbzipYvzwY4OA8Ys+WAi0oR1A04Se6
z5nRUP8pJcA2NhUzUnC+MY+f6H/nEQyNv4SgQhqAibAxWEEHXw==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com
issuer=/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA
---
No client certificate CA names sent
---
SSL handshake has read 1777 bytes and written 316 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol : TLSv1
    Cipher : AES256-SHA
    Session-ID: 748E2B5FEFF9EA065DA2F04A06FBF456502F3E64DF1B4FF054F54817C473270C
    Session-ID-ctx: 
    Master-Key: C4284AE7D76421F782A822B3780FA9677A726A25E1258160CA30D346D65C5F4049DA3D10A41F3FA4816DD9606197FAE5
    Key-Arg : None
    Start Time: 1266259321
    Timeout : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
---

それは暗号スイートがAES256-SHAの何かであることを示しているだけです。私は会話の16進ダンプを grep することができることを知っていますが、私はもう少しエレガントなものを期待していました。

私はこれをLinux上で行うことを好むが、Windows(または他の)でも良いでしょう。この質問は、私がPCIや一般的な侵入テストのために行っているセキュリティテストによって動機づけられています。

更新:

グレッグさんは、SSLサーバがクライアントの暗号スイートから選択することを下で指摘しています。だから、一度にすべての暗号スイートをテストする必要があるように思えます。私は一緒に何かをハックすることができると思いますが、これを行うために、よりシンプルで、より将来的に保証された(例えば、新しい暗号)方法はありますか?

回答 (21)

246
246
246
2010-12-20 23:41:17 +0000

暗号スイートをテストするための bash スクリプトを書きました。これは OpenSSL からサポートされている暗号スイートのリストを取得し、それぞれの暗号スイートを使って接続を試みます。ハンドシェイクが成功した場合は YES を表示します。ハンドシェイクが成功した場合は NO を表示し、その後に OpenSSL のエラーテキストを表示します。

#!/usr/bin/env bash

# OpenSSL requires the port number.
SERVER=$1
DELAY=1
ciphers=$(openssl ciphers 'ALL:eNULL' | sed -e 's/:/ /g')

echo Obtaining cipher list from $(openssl version).

for cipher in ${ciphers[@]}
do
echo -n Testing $cipher...
result=$(echo -n | openssl s_client -cipher "$cipher" -connect $SERVER 2>&1)
if [["$result" =~ ":error:"]] ; then
  error=$(echo -n $result | cut -d':' -f6)
  echo NO \($error\)
else
  if [["$result" =~ "Cipher is ${cipher}" || "$result" =~ "Cipher :"]] ; then
    echo YES
  else
    echo UNKNOWN RESPONSE
    echo $result
  fi
fi
sleep $DELAY
done

ここでは 3 つの未サポート暗号と 1 つのサポートされている暗号を表示しています。

170
170
170
2014-06-05 09:29:14 +0000

ネットワークサービスから利用可能な暗号の一覧を取得するには、これ以上に速くて良い方法はありません。さらに、nmap は利用可能な各暗号の強度評価を強、弱、不明のいずれかで提供します。

まず、 ssl-enum-ciphers.nse nmap スクリプト 説明はこちら ) をダウンロードします。次に、スクリプトと同じディレクトリから、次のように nmap を実行します:

List ciphers supported by an HTTP server

$ nmap --script ssl-enum-ciphers -p 443 www.example.com

List ciphers supported by an IMAP server

$ nmap --script ssl-enum-ciphers -p 993 mail.example.com

ここでは、Dovecot IMAP サーバからの出力の抜粋です: 002 “` 993/tcp open imaps | ssl-enum-ciphers: | SSLv3: | ciphers: | TLSDHERSAWITH3DESEDECBCSHA - strong | TLSDHERSAWITHAES128CBCSHA - strong | TLSDHERSAWITHAES256CBCSHA - strong | TLSRSAWITHIDEACBCSHA - weak … | TLSv1.0: | ciphers: | TLSDHERSAWITH3DESEDECBCSHA - strong | TLSDHERSAWITHAES128CBCSHA - strong | TLSDHERSAWITHAES256CBCSHA - strong | TLSRSAWITHIDEACBCSHA - weak … |_ least strength: weak

Nmap done: 1 IP address (1 host up) scanned in 1.03 seconds ”`

106
106
106
2010-02-20 18:02:27 +0000

SSL/TLS暗号スイートをテストできるツールはありますか?

はい、 SSL Labs ’のウェブサイトにあるオンラインツールを使って、公開SSLサーバデータベースに問い合わせをすることができます。

57
57
57
2010-03-18 22:21:08 +0000

TLS と SSL での接続をテストし (ビルドスクリプトは OpenSSL の独自のコピーとリンクできるので、古い SSL のバージョンもチェックされます)、サーバの暗号スイートと証明書についてのレポートを提供します。

15
15
15
2014-09-16 11:25:38 +0000

ここはSSLスキャンツールのための素晴らしい参考スレッドなので、1年前に作られたCipherScanをリストアップしておきます。 com/oparoz/cipherscan ](https://github.com/jvehent/cipherscan)

これは openssl s_client を呼び出すスクリプトで、あなた自身の OpenSSL バイナリの使用をサポートしているので、今後の機能や新しい暗号 (例として chacha20+poly1305) をテストすることができます。

また、任意のポートに接続して starttlss を使用することができます。

ここに典型的な出力があります

# ./cipherscan -o ./openssl api.mycompany.com:443
...................
prio ciphersuite protocols pfs_keysize
1 DHE-RSA-AES256-GCM-SHA384 TLSv1.2 DH,4096bits
2 DHE-RSA-AES256-SHA256 TLSv1.2 DH,4096bits
3 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 ECDH,P-384,384bits
4 ECDHE-RSA-AES256-SHA384 TLSv1.2 ECDH,P-384,384bits
5 DHE-RSA-AES128-GCM-SHA256 TLSv1.2 DH,4096bits
6 DHE-RSA-AES128-SHA256 TLSv1.2 DH,4096bits
7 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 ECDH,P-384,384bits
8 ECDHE-RSA-AES128-SHA256 TLSv1.2 ECDH,P-384,384bits
9 DHE-RSA-CAMELLIA256-SHA TLSv1,TLSv1.1,TLSv1.2 DH,4096bits
10 DHE-RSA-AES256-SHA TLSv1,TLSv1.1,TLSv1.2 DH,4096bits
11 ECDHE-RSA-AES256-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-384,384bits
12 DHE-RSA-CAMELLIA128-SHA TLSv1,TLSv1.1,TLSv1.2 DH,4096bits
13 DHE-RSA-AES128-SHA TLSv1,TLSv1.1,TLSv1.2 DH,4096bits
14 ECDHE-RSA-AES128-SHA TLSv1,TLSv1.1,TLSv1.2 ECDH,P-384,384bits
15 CAMELLIA256-SHA TLSv1,TLSv1.1,TLSv1.2
16 AES256-SHA TLSv1,TLSv1.1,TLSv1.2
17 CAMELLIA128-SHA TLSv1,TLSv1.1,TLSv1.2
18 AES128-SHA TLSv1,TLSv1.1,TLSv1.2

Certificate: trusted, 4096 bit, sha256WithRSAEncryption signature
TLS ticket lifetime hint: 300
OCSP stapling: supported

そしてここにオプションのリストがあります

-a | --allciphers Test all known ciphers individually at the end.
-b | --benchmark Activate benchmark mode.
-d | --delay Pause for n seconds between connections
-D | --debug Output ALL the information.
-h | --help Shows this help text.
-j | --json Output results in JSON format.
-o | --openssl path/to/your/openssl binary you want to use.
-v | --verbose Increase verbosity.

他のスクリプトからこれを呼び出している場合は、json 出力が便利です。

13
13
13
2012-01-25 14:01:34 +0000

https://github.com/iSECPartners/sslyze

これはPythonベースで、Linux/Mac/Windowsでコマンドラインから動作します。

8
8
8
2010-02-20 16:30:05 +0000

少しググった後、私は以下を見つけました Testing for SSL-TLS (OWASP-CM-001) :

nmap スキャナは、"-sV “スキャンオプションを介して、SSLサービスを識別することができます。脆弱性スキャナは、サービスの発見を行うことに加えて、弱い暗号化方式のチェックを含むことがあります(例えば、Nessusスキャナは、任意のポート上のSSLサービスをチェックする機能を持っており、弱い暗号化方式を報告します)。Foundstone SSL Digger ](http://www.mcafee.com/us/downloads/free-tools/ssldigger.aspx)は、サポートされている暗号をテストすることでSSLサーバの強度を評価するツールです。これらの暗号化方式の中には、安全でないことが知られているものもあります。

6
6
6
2015-01-10 17:36:14 +0000

私はSSLテストのほとんどのテストにtestssl.shを使用しています( https://testssl.sh /開発版@ https://github.com/drwetter/testssl.sh を参照してください。脆弱性、暗号、プロトコルなどをテストします。

2
2
2
2014-04-09 18:31:47 +0000

grepableな出力をしたい場合 (そして全てのSSL/TLSのバージョンをチェックするサポート)

使用方法. ./script.sh www.url.com

#!/usr/bin/env bash
ciphers2=$(openssl ciphers -ssl2 'ALL:eNULL' | sed -e 's/:/ /g')
ciphers3=$(openssl ciphers -ssl3 'ALL:eNULL' | sed -e 's/:/ /g')
cipherst1=$(openssl ciphers -tls1 'ALL:eNULL' | sed -e 's/:/ /g')
cipherst11=$(openssl ciphers -tls1.1 'ALL:eNULL' | sed -e 's/:/ /g')
cipherst12=$(openssl ciphers -tls1.2 'ALL:eNULL' | sed -e 's/:/ /g')

SSL2="SSL2("
for cipher in ${ciphers2[@]}
do
result=$(echo -n | openssl s_client -ssl2 -cipher "$cipher" -connect $1:443 2>&1)
if [["$result" =~ "Cipher is ${cipher}"]] ; then
  SSL2="${SSL2}${cipher}:"
fi
done
SSL2=$(echo "${SSL2})" | sed -e 's/:)/)/g')

SSL3="SSL3("
for cipher in ${ciphers3[@]}
do
result=$(echo -n | openssl s_client -ssl3 -cipher "$cipher" -connect $1:443 2>&1)
if [["$result" =~ "Cipher is ${cipher}"]] ; then
  SSL3="${SSL3}${cipher}:"
fi
done
SSL3=$(echo "${SSL3})" | sed -e 's/:)/)/g')
TLS1="TLS1("
for cipher in ${cipherst1[@]}
do
result=$(echo -n | openssl s_client -tls1 -cipher "$cipher" -connect $1:443 2>&1)
if [["$result" =~ "Cipher is ${cipher}"]] ; then
  TLS1="${TLS1}${cipher}:"
fi
done
TLS1=$(echo "${TLS1})" | sed -e 's/:)/)/g')

TLS11="TLS1.1("
for cipher in ${cipherst11[@]}
do
result=$(echo -n | openssl s_client -tls1_1 -cipher "$cipher" -connect $1:443 2>&1)
if [["$result" =~ "Cipher is ${cipher}"]] ; then
  TLS11="${TLS11}${cipher}:"
fi
done
TLS11=$(echo "${TLS11})" | sed -e 's/:)/)/g')

TLS12="TLS1.2("
for cipher in ${cipherst12[@]}
do
result=$(echo -n | openssl s_client -tls1_2 -cipher "$cipher" -connect $1:443 2>&1)
if [["$result" =~ "Cipher is ${cipher}"]] ; then
  TLS12="${TLS12}${cipher}:"
fi
done
TLS12=$(echo "${TLS12})" | sed -e 's/:)/)/g')

echo "$1,$SSL2,$SSL3,$TLS1,$TLS11,$TLS12";
2
2
2
2010-12-01 20:40:29 +0000

SSLScanは素晴らしいです; 新しいツール SSLDiagnos はWindowsで動作しますし、openssl s_clientを使ってスクリプトを書くこともできます。

2
2
2
2016-02-05 00:55:55 +0000

indivさんの回答と、それを独自の回答として投稿するという提案に基づいて、私は@indivさんのスクリプトの微調整されたバージョンを提供しています。最初の引数にホストを指定すると、オリジナルのスクリプトと同じ結果が出力されますが、少しフォーマットが変わっています:

#!/usr/bin/env bash
# adapted from https://superuser.com/questions/109213/how-do-i-list-the-ssl-tls-cipher-suites-a-particular-website-offers

# OpenSSL requires the port number.
# SERVER=192.168.1.1:443
SERVER=$1
if [[-z "$SERVER"]]; then echo "ERROR: no server specified"; exit 1; fi;

## Set up colors, if possible
if [[$(tput colors)]];then
  COLOR_BOLD="$(tput bold)" # "\e[1;32m"
  COLOR_GREEN="$(tput setaf 2)" # "\e[1;32m"
  COLOR_RESET="$(tput sgr0)" # "\e[0m"
fi

SERVER=$1:443
echo Server is ${COLOR_BOLD}"$SERVER"${COLOR_RESET}

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

echo Obtaining cipher list from $(openssl version).

for cipher in ${ciphers[@]}
  do
  printf "%-42s" "Testing $cipher... "
  result=$(echo -n | openssl s_client -cipher "$cipher" -connect $SERVER 2>&1)
  if [["$result" =~ ":error:"]] ; then
    error=$(echo -n $result | cut -d':' -f6)
    echo NO \($error\)
  else
    if [["$result" =~ "Cipher is ${cipher}" || "$result" =~ "Cipher :"]] ; then
      echo ${COLOR_BOLD}${COLOR_GREEN}YES${COLOR_RESET}
    else
      echo UNKNOWN RESPONSE
      echo $result
    fi
  fi
  sleep $DELAY
done
2
2
2
2012-01-19 05:39:21 +0000

pentesterscripting.com_には、SSLScanとOpenSSLの両方を利用して、以下のチェックをするための小さなスクリプトがあります:

メインサイトが死んでしまったので、将来のためにここに複製しました:

#!/usr/bin/env bash

# Description:
# Script to extract the most security relevant details from a 
# target SSL/TLS implementation by using sslscan.
# Author: Raul Siles (raul _AT_ taddong _DOT_ com)
# Taddong (www.taddong.com)
# Date: 2011-05-27
# Version: 1.0
#
# - Current SSL/TLS tests: 
# SSLv2, NULL cipher, weak ciphers -key length-, strong 
# ciphers -AES-, MD5 signed cert, SSL/TLS renegotiation
#
# Requires: 
# - sslscan
# https://sourceforge.net/projects/sslscan/
#
# Credits: Based on ssl_test.sh by Aung Khant, http://yehg.net.
# 

#
# / **************************************************************************
# * Copyright 2011 by Taddong (Raul Siles) *
# * *
# * This program is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU General Public License as published by *
# * the Free Software Foundation; either version 3 of the License, or *
# * (at your option) any later version. *
# * *
# * This program is distributed in the hope that it will be useful, *
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
# * GNU General Public License for more details. *
# * *
# * You should have received a copy of the GNU General Public License *
# * along with this program. If not, see <http://www.gnu.org/licenses/>. *
# * *
# ************************************************************************** /
#

VERSION=1.0

OPENSSLVERSION=$(openssl version)
SSLSCANVERSION=$(sslscan --version | grep version | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")

echo ------------------------------------------------------
echo " TLSSLed - ($VERSION) based on sslscan and openssl"
echo " by Raul Siles (www.taddong.com)"
echo " ( inspired by ssl_test.sh by Aung Khant )"
echo ------------------------------------------------------
echo + openssl version: $OPENSSLVERSION
echo + $SSLSCANVERSION
echo ------------------------------------------------------
echo

if [$# -ne 2]; then 
   echo Usage: $0 IP PORT
   exit
fi

HOST=$1
PORT=$2

echo [*] Analyzing SSL/TLS on $HOST:$PORT ...
echo 

# Run sslcan once, store the results to a log file and
# analyze that file for all the different tests:
DATE=$(date +%F_%R:%S)
TARGET=$HOST:$PORT
LOGFILE=sslscan\_$TARGET\_$DATE.log
ERRFILE=sslscan\_$TARGET\_$DATE.err

echo [*] Running sslscan on $HOST:$PORT...
sslscan $HOST:$PORT > $LOGFILE 2> $ERRFILE

echo
echo [*] Testing for SSLv2 ...
cat $LOGFILE | grep "Accepted SSLv2"
echo
echo [*] Testing for NULL cipher ...
cat $LOGFILE | grep "NULL" | grep Accepted
echo
echo [*] Testing for weak ciphers \(based on key length\) ...
cat $LOGFILE | grep " 40 bits" | grep Accepted
echo 
cat $LOGFILE | grep " 56 bits" | grep Accepted
echo
echo [*] Testing for strong ciphers \(AES\) ...
cat $LOGFILE | grep "AES" | grep Accepted

echo 
echo [*] Testing for MD5 signed certificate ...
#cat $LOGFILE | grep -E 'MD5WithRSAEncryption|md5WithRSAEncryption'
cat $LOGFILE | grep -i 'MD5WithRSAEncryption'

echo 
echo [*] Checking preferred server ciphers ...
cat $LOGFILE | sed '/Prefered Server Cipher(s):/,/^$/!d' | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

echo
echo [*] Testing for SSLv3/TLSv1 renegotiation vuln. \(CVE-2009-3555\) ...
#echo [*] echo R \| openssl s_client -connect $HOST:$PORT \| grep "DONE"
#
# Renegotiation details go to stderr (2>)
#
# if $OPENSSLVERSION is updated (version?) it supports RFC5746 and will print:
# Secure Renegotiation IS NOT supported
# Secure Renegotiation IS supported
#

echo R | openssl s_client -connect $HOST:$PORT | grep -E "Secure Renegotiation IS|DONE"

echo
echo [*] New files created:
ls -l $LOGFILE
if [! -s $ERRFILE]; then
        # Error file is empty
        rm $ERRFILE
else
        ls -l $ERRFILE
fi

echo
echo 
echo [*] done
echo

使用法. ./ssltest.sh HOST PORT

2
2
2
2014-03-25 21:58:08 +0000

Nmapの ssl-enum-ciphers スクリプトは、サポートされている暗号化方式とSSL/TLSのバージョン、およびサポートされているコンプレッサをリストアップすることができる。

2
2
2
2016-09-19 03:01:09 +0000

(無料の) Kezさんの回答で述べたSSL Labsのオンラインツールを開発したIvan Ristićによる OpenSSL Cookbook には次のように書かれています:

特定のサーバでサポートされているすべてのスイートを確認したい場合は、まずopenssl ciphers ALLを起動して、あなたのバージョンのOpenSSLでサポートされているすべてのスイートのリストを取得してください。そして、それらを一つずつサーバに提出して、個別にテストしてください。これは手動で行うことを提案しているのではありません。実際、これは 良いツールを探してみるのが適切かもしれない という状況です。それは、OpenSSL がサポートしているスイートしかテストできないということです。…

単一のSSL/TLSライブラリがすべての暗号スイートをサポートしているわけではありません。SSL Labsでは、任意の暗号スイート**をサポートしているふりをするカスタムクライアントを使って、この目的のために部分的なハンドシェイクを使うことに頼りました。実際には単一のスイートさえネゴシエートできませんが、ネゴシエートすることを提案するだけで、サーバがスイートをサポートしているかどうかを教えてくれます。この方法ですべてのスイートをテストできるだけでなく、非常に効率的にテストすることができます。

(私の強調)

他の回答で言及されているのを見たことがないツールの一つは、Stephen Bradshawの SSLTest です。 “

ですから、これか他の回答で述べたツールの一つを試してみてください。

1
1
1
2020-02-11 13:25:43 +0000

この解答は、与えられた最良の解答を要約し、代替案を選ぶ理由を論じています(あるいは選ばない理由も!)_


最良の解答を見つけるためには、まず「なぜサポートされているすべての暗号を列挙したいのか」と答える必要があります。ここでは、セキュリティの面、つまりサーバが脆弱かどうかを調べることに焦点が当てられます。次に答えるべき質問は、出力が機械で読めるようにすべきかどうか、例えばスクリプトの中でさらに使用できるようにすべきかどうか、ということです。 testssl.sh

  • CLI (Bash)
  • TLSv1. 3
  • 既知の脆弱性をチェックします
  • 自己完結型 (インストール不要)
  • 非推奨の暗号を含む 370 ciphers (バージョン 3.1 現在) をサポートします (新しいバージョンの openSSL には含まれていません)
  • 機械で読める結果を生成します (CSV と JSON)
  • 脆弱性をチェックします
  • 既知の脆弱性をチェックします。(並列化された)バッチ処理
  • Slow

多分、以下の代替案に対する testssl.sh の最も重要な利点は、脆弱性テストのために調整されたバイナリのセットを使用していることです (開発者の説明 ここ を参照 )。

2. cipherscan

  • CLI (python)
  • TLSv1.3なし
  • 自己完結型
  • 限定的な暗号スイート (ハードコード)
  • 機械で読める結果 (JSON) を生成する
  • 高速

3. nmap ssl-enum-ciphers ](https://nmap.org/nsedoc/scripts/ssl-enum-ciphers.html)

  • CLI (nmap スクリプト)
  • TLSv1.3 なし
  • 自己完結型
  • 限定的な暗号スイート (ハードコード)
  • 既知の脆弱性をチェックする
  • 機械可読結果なし

利用可能なツールの包括的な概要については、 sslLabs Assessment Tools を参照してください。

1
1
1
2015-09-26 11:24:14 +0000

SSLyzeは元々は https://github.com/iSECPartners/sslyze にありましたが、現在は https://github.com/nabla-c0d3/sslyze にあります。

SSLyzeはPythonベースで、Linux/Mac/Windows上でコマンドラインから動作します。

プロトコル、暗号スイート、鍵の詳細、そして一般的な脆弱性のテストをリストアップしています。特定のチェックを有効にしたり無効にしたりして、より多くのデータを取得したり、スキャンを高速化したりすることができます。

1
1
1
2014-05-25 13:34:41 +0000

これを正確に行うツールを書きました。これはtlsenumと呼ばれ、 GitHub で利用可能です。

[ayrx@division tlsenum]$ ./tlsenum.py twitter.com 443
TLS Versions supported by server: 3.0, 1.0, 1.1, 1.2
Supported Cipher suites in order of priority:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA

これはtwitter.comに対するツールの出力例です。

0
0
0
2014-11-04 20:45:59 +0000

これらの答えはすべて問題ありません。答えの一部には、なぜサーバのリストを発見するツールが必要なのかを説明することができます。 opensslfoundation.com/index.php/SSLand_TLSProtocols#Cipher_Suites ](http://wiki.opensslfoundation.com/index.php/SSL_and_TLS_Protocols#Cipher_Suites)

そのため、クライアントはサーバがサポートしている暗号を見つけられるように暗号を列挙しなければならず、そのためには各暗号スイートに対して少なくとも一度は新しい開始ハンドシェイク(ClientHello)をしなければなりません。

0
0
0
2010-02-15 21:51:27 +0000

あなたにできる唯一のことは、すべての暗号スイートを一度に一つずつ試してみて、どの暗号スイートが受け入れられるかを確認することです。

クライアントがどの暗号スイートを受け入れるかを宣伝している間、サーバは単に一つを選んでそれを使うか、気に入るものがなければ接続を失敗させるだけです。

0
0
0
2016-03-02 10:02:12 +0000

TestSSLServer ](http://www.bolet.org/TestSSLServer/)は純粋にJavaベースのソリューションです。利点:

  • それは非常に低レベルで動作していて、単にプレーンなソケット上で動作しているので、JDKやOpenSSLから利用できない可能性のある暗号に**依存しません。

  • それは(pingのためのICMPのような)追加のポートを開く必要はありません

  • それはクライアント証明書が存在すると動作しています

欠点:

  • 2016年の時点で、暗号化のリストは時代遅れかもしれません(私はこれを判断するためにここで専門家ではありませんが)

私の個人的な経験。ちょうど単一のHTTPSポートが開いている(他のポートはありません)、クライアント証明書が必要とiptablesがアクティブであるとタイトに並べられたサーバーを与えられた、それはまだトップ投票のソリューションは(私は小さなシェルスクリプト、SSL Labs、NMap、sslscanを試していた)ではなかったが、利用可能な暗号化方式をリストアップすることができました

0
0
0
2014-12-20 23:56:37 +0000

FTP上でAUTH TLSを行うものを探していたところ、このツールを発見しました。 ssl-cipher-suite-enum

基本的には hackajar のシェルスクリプトと同じことをする perl スクリプトですが、より洗練されています。これは、家庭用の SSL Labs ツールのようなものです。 :)

デフォルトでは、FTP での AUTH SSL のみをサポートしていますが、簡単な検索と置換で修正できます。ボーナスとして、それはまた、STARTTLSとRDPでSMTPをサポートすると主張しています。

関連する質問

8
13
16
2
15