「ncatでSSLを使う方法」の版間の差分
(相違点なし)
|
2013年6月17日 (月) 00:36時点における最新版
ncatは、SSLを使うことで、トラフィックを暗号化できます。コネクトモードでは、 --ssl オプションをつけるだけです。 --ssl は、 TCP (デフォルト) と SCTP (--sctp オプション) で機能します。
概要
ncatは、SSLを使うことで、トラフィックを暗号化できます。コネクトモードでは、 --ssl オプションをつけるだけです。 --ssl は、 TCP (デフォルト) と SCTP (--sctp オプション) で機能します。
HTTPS サーバーに対する接続なら、以下の通りです。
ncat -C --ssl server 443
SSL サーバーは、ときどき、認証のためにクライアント証明書を要求することがあります。そういったケースでは、 --ssl-cert と --ssl-key オプションを用いて、証明書を含んだ、PEM エンコードのファイルとプライベートキーを指定します。
デフォルトでは、クライアントは、サーバ証明書の検証を行いません。そのため、サーバー証明書に問題があっても、証明書がなくても、検出しません。 --ssl-verify オプションを使って、証明書の検証とドメイン名の書くにを行います。
ncat -C --ssl-verify server 443
証明書の検証は、ncat にバンドルされている ca-bundle.crt を使用して行われます。 それに加えて、OS が提供する信頼されている証明書も使われます。 デフォルトの証明書認証局に署名されていない証明書のサーバに対する接続の検証を行う場合は、 --ssl-trustfile オプションをつかって、証明書ファイルを指定してください。このファイルは、PEM フォーマットでなければなりません。
ncat -C --ssl-verify --ssl-trustfile custom-certs.pem server 443
検証は、いつでも実施されるべきです。 暗号化は、未検証の接続は、中間者攻撃に対して、脆弱です。 ncat は、証明書の取り消しのチェックを行いません。
ncat は、SSL サーバーとしても動作します。 サーバーは、クライアントが確認する証明書を提供しなければなりません。 もし、SSL サーバーを --ssl-cert と --ssl-key オプションなしで起動する場合、ncat は、自動的に 1024 bit RSA の鍵と証明書を発行します。 その証明書は、アプリケーションの証明書チェックによって、信頼されないと認識されます。 冗長モード(verbose モード) では、キーのフィンガープリントを表示します。
実行例は、下記の通りです。
% ncat -v --listen --ssl Ncat: Version 6.25 ( http://nmap.org/ncat ) Ncat: Generating a temporary 1024-bit RSA key. Use --ssl-key and --ssl-cert to use a permanent one. Ncat: SHA-1 fingerprint: 2E37 9B23 324B A1FB 6576 7776 0AFE 68CF 3013 237B Ncat: Listening on :::31337 Ncat: Listening on 0.0.0.0:31337
テストを目的として、 自己署名証明書 を生成するには、下記のコマンドで行います。
openssl req -new -x509 -keyout test-key.pem -out test-cert.pem
OpenSSL については、OpenSSL をご参照ください。
証明書の検証を目的に、 証明書の commonName (コモンネーム) は、サーバーを事項するホストが完全修飾ドメイン (Fully Qualified Domain Name)と一致しなければなりません。 証明書を生成したあとに、サーバーを起動してください。
ncat --listen --ssl --ssl-cert test-cert.pem --ssl-key test-key.pem
クライアント接続の検証を行うには、下記の通りです。
ncat --ssl-verify --ssl-trustfile test-cert.pem