sslsplitとは
中間者攻撃を行い、テスト対象機器が正しく証明書を検証しているか確認するツール。 sslsplitはX over SSL/TLSに幅広く使える。
インストール
$ sudo aptitude install sslsplit
準備
証明局証明書の作成。manに書いてあるとおり。
$ cat >x509v3ca.cnf <<'EOF'
[ req ]
distinguished_name = reqdn
[ reqdn ]
[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always
EOF
$ openssl genrsa -out ca.key 2048
$ openssl req -new -nodes -x509 -sha256 -out ca.crt -key ca.key \
-config x509v3ca.cnf -extensions v3_ca \
-subj '/O=SSLsplit Root CA/CN=SSLsplit Root CA/' \
-set_serial 0 -days 3650
HTTPとHTTPSの例
# iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 10080
# iptables -t nat -A PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-ports 10443
$ sslsplit -D -k ca.key -c ca.crt -l connect.log -L sample.log https 0.0.0.0 10443 http 0.0.0.0 10080
これは、
$ mitmproxy -e -T -p 10443
と同等。
SMTPの例
# iptables -t nat -A PREROUTING -p tcp --destination-port 465 -j REDIRECT --to-ports 10465
$ sslsplit -D -k ca.key -c ca.crt -l connect.log -L sample.log ssl 0.0.0.0 10456
テスト環境動作確認を行うには以下
$ openssl s_client -connect smtp.gmail.com:465 -showcerts