ncatでSSLを使う方法

提供: セキュリティ
移動: 案内検索
スポンサーリンク

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

関連項目




スポンサーリンク