コメント:
翻訳の正確さは保証しません。
必ず、原文と共に、使用してください。
訳者メモ:
この文書は、すでに一部機能のサポートが終了している外部フィルタ sslway について説明されているものです。
DeleGate/9.0.1 以降のバージョンでは、FCL="sslway" のような SSL フィルタは、 STLS="fcl" のように指定します。
FCL="sslway" のようなフィルタと比較して、STLS のパフォーマンスや機能は大幅に向上しています。
詳細は、DeleGate による汎用 TLS ゲートウェイと、
リファレンスマニュアルの STLS パラメータ を見てください。
DeleGateによって中継可能な、 さまざまな、TCP上のアプリケーションプロトコル (HTTP, NNTP, POP, Telnet, Socks, etc.) は、 現在、SSLで、暗号化できます。 DeleGateによる仲介で、非SSLクライアントは、SSLサーバと対話でき、 また、非SSLサーバは、SSLクライアントと対話できます。
DeleGateは、単体でSSL機能を持たないため、SSL暗号化と非暗号化は、 外部フィルタ をDeleGateと関連付けることにより達成されます。 SSLは、双方向プロトコルなので、DeleGateの双方向タイプフィルタ(FCL, FSV, FMD)を使用します。 FCLフィルタは、SSL接続を受けるために、SSLクライアントとDeleGateの間に挿入されます。 FSVフィルタは、SSL接続を確立するために、DeleGateと、SSLサーバの間に挿入されます。 非暗号化または、暗号化される時、アプリケーションプロトコル上の通信は、これらフィルタを通過します。 DeleGateにバインドされた通信は、非暗号化され、DeleGateからの通信は、暗号化されます。
この、DeleGate用、SSL暗号化/非暗号化フィルタは、SSLwayと呼びます。 SSLwayは、双方向フィルタとして、DeleGateから、呼び出されます。 双方向外部フィルタ機構と、SSLwayフィルタプログラムは、DeleGate/5.3.2から、 Unix同様、Win32と、OS/2にも適用可能になっています。
SSLway は、 SSLeay を元にして、作られました。
1. まず、以下のファイルをDGROOT/lib/ ディレクトリに配置します。 sslway server-key.pem server-cert.pem 2. 以下のパラメータで、DeleGateを起動します: delegated \ -P443 \ SERVER=https \ FCL=sslway \ RELIABLE="*" \ MOUNT="/* http://localhost/*" \ REACHABLE=localhost
FSV=sslway ... SSL サーバに接続する FMD=sslway ... 上流DeleGateにSSLで接続する FCL=sslway ... SSLクライアントを受け付ける(DeleGateを含む)オプション
-cert ファイル -- この SSLway が相手に提出する証明書(プライベートキーと対で有効な) -key ファイル -- プライベートキーファイル (-cert ファイル に含まれない場合) -pass arg -- キーのためのパスフェーズソース (pass:文字列 または file:ファイルパス) [default: keyfile.pas] -CAfile file -- CA の証明書を含むファイルの名前 -CApath dir -- CA の証明書ファイル(それぞれ、`X509 -hash -noout < certificate.pem` のような名前)を含むディレクトリ -Vrfy -- 相手の証明書の、提示・認証を強制 -vrfy -- 相手の証明書が提示された場合、認証を強制 -Auth -- 相手は証明書を提示する必要があるが、認証しない -auth -- 相手の証明書が存在すれば、ログに記録するだけ (廃止された、"-client_auth" と同じ) -co サーバへの接続で SSL を有効にする [FSV のデフォルト] -ac クライアントからの接続で SSL を有効にする [FCL のデフォルト] -ad SSL-ClientHello での自動認識で、SSL または 素通しの何れかを受け付ける -ss FTP で AUTH SSL によりネゴシエイトする(データ接続で暗黙のSSL) -st STARTTLS (プロトコル自動認識) および、SSLトンネリングを受け付ける -St 最初に、STARTTLS(プロトコル自動認識)および、FTP での PBSZ+PROT を強制 -{ss|st|St}/protocol プロトコル {SMTP,POP,IMAP,FTP} に対し STARTTLS を有効にする
必要なファイル(証明書と鍵(PEMフォーマット))は、
LIBPATH
(通常、DGROOT/lib/)に配置する必要があります。他の場合、これらファイルの位置は、
環境変数"SSL_CERT_FILE=filename" で、明示するか、
sslwayコマンドの、"-cert filename" オプションで指定する必要があります。
これは、FCLで、sslwayを走らせるか、FSVや、FMDで、対象サーバが、クライアントの証明書
を要求する場合に、sslwayを動作させる場合、必須となります。
delegated -v -P8023 FSV=sslway SERVER=telnet REMITTABLE=telnet
POPサーバから、クライアントへ、中継するHTTPSサーバのDeleGate:
delegated -v -P8080 FCL=sslway SERVER=https MOUNT="/* pop://popserver/*"
任意のサーバにSSL接続するSocksV4サーバのDeleGate:
delegated -v -P1080 FSV=sslway SERVER=socks
任意のサーバにSocks経由でSSL接続するTelenetプロキシのDeleGate:
delegated -v -P8023 FSV=sslway SERVER=telnet CONNECT=socks SOCKS=socks-server
素のTelnetサーバをTelnet/SSLサーバにする:
delegated -v -P8023 FCL=sslway SERVER=telnet://telnet-server素のTelnetクライアントをTelnet/SSLクライアントにする:
delegated -v -P8023 FSV=sslway SERVER=telnet://telnet-delegate素のPOPサーバをPOP/SSLサーバにする:
delegated -v -P8110 FSV=sslway SERVER=pop://pop-server任意のPOPサーバにSSL接続するPOPプロキシのDeleGate:
delegated -v -P8110 FSV=sslway SERVER=popTCP上の任意プロトコルによるクライアント・サーバ間の通信を暗号化する:
delegated -v -P8000 FSV=sslway SERVER=tcprelay://delegate:8000 delegated -v -P8000 FCL=sslway SERVER=tcprelay://server-host:portNNTPクライアント・サーバ間の通信をSSLで暗号化する:
delegated -v -P8119 FSV=sslway SERVER=nntp://nntp-delegate:8119 delegated -v -P8119 FCL=sslway SERVER=nntp://nntp-serverDeleGate間の通信をSSLで、暗号化する:
delegated -v -P8080 FMD=sslway MASTER=delegate-host:8888 delegated -v -P8888 FCL=sslway素のHTTPサーバをHTTPS/SSLサーバにする:
delegated -v -P8080 FCL=sslway SERVER=https MOUNT="/* http://http-server/*"HTTPS/SSLクライアントのための、NNTP/HTTPゲートウェイサーバ:
delegated -v -P8080 FCL=sslway SERVER=https MOUNT="/* nntp://nntp-server/*"素のHTTPクライアントをHTTPS/SSLクライアントにする、httpプロキシのDeleGate:
delegated -v -P8080 CMAP="sslway:FSV:https:*:*"指定したサーバにのみSSLwayを利かせる:
delegated -v -P8023 CMAP="sslway:FSV:telnet:server-list:*" SERVER=telnetFTPS クライアントを受け付ける(ネゴシエーションなしで、SSL を開始):
delegated FCL=sslway SERVER=ftpFTPS サーバに接続する(ネゴシエーションなしで、SSL を開始):
delegated FSV=sslway SERVER=ftpFTP/SSL クライアントを受け付ける("AUTH TLS" ネゴシエーションによる、オンデマンド SSL):
delegated CMAP=sslway:FCL:ftp-data CMAP="sslway -st:FCL:ftp" SERVER=ftpSSLwrapperのDeleGate:
delegated -v -P8079 FCL=sslway SERVER=exec XCOM=/usr/etc/in.fingerd
sslwayの実行ファイルがディレクトリにできるはずです。
Win32用の、DeleGateと、SSLwayの実行ファイルは、 ftp://www.delegate.org/pub/DeleGate/bin/windows/latest/にあります。 上記例のDeleGate実行ファイル(delegated)は、"DG6_1_18.EXE"のように、 バージョンつきの名前になります。
DeleGateをプラットフォーム(Unixes, OS/2, Win32)にあわせて自分で作るのは、 簡単です。 ftp://www.delegate.org/pub/DeleGate/README.MAKE を見てください。 配布パッケージを、 ftp://www.delegate.org/pub/DeleGate/ で、入手、解凍し、"make"!
自分でSSLWAYを開発する
自前のSSLwayや、他の外部フィルタを開発できます。
(SSHway なんていうの :-).
DeleGateの外部フィルタは、一種のシンプルAPIでDeleGateを機能拡張します。
これには、2タイプの外部フィルタがあり;
単方向 フィルタ (FFROMCL, FTOCL, FTOSV, FFROMSV, FTOMD, FFROMMD)
と、 双方向 フィルタ (FCL, FSV, FMD)。
SSLwayのような双方向フィルタは、2つのソケットを与え、 ファイルディスクリプタナンバ0と、1に割り当てます。 ディスクリプタ0は、クライアント側のソケットにバインドされ、 1番は、サーバ側にバインドされます。 Win32と、OS/2のようなプラットフォームでは、子プロセスで、ソケットを、継承したり、 標準入出力として扱うことができないため、CFI_init()関数をフィルタプログラムの開始時に コールしなければなりません。 この関数を使うには、library.a と、libsubst.a をDeleGateの lib/ ディレクトリ内にリンクする必要があります。 filters/ ディレクトリ内の Makefile, sslway.c, bdtee.c は、双方向フィルタプログラムの作り方を理解するために役立つでしょう。
同様に、単方向フィルタは、2つのファイルディスクリプタを与え、ナンバ0と、1に割り付け、 それぞれ、入力と出力にバインドします。 プラットフォームでは、子プロセスで、ソケットの継承や、標準入出力として扱うことができないので、 ディスクリプタは、DeleGate(ソケットにリレーする)にバインドするため、 パイプにリダイレクトされます。 したがって、現存のフィルタプログラムは、そのまま、DeleGateに結び付けられます。
これら外部フィルタは、クライアントへの接続に関する情報を、 環境変数、REMOTE_HOST, REMOTE_ADDR, REMOTE_IDENTで、提供でき、 これらは、CGI仕様書で指定されます。
指定した条件で、選択したフィルタを利かせたい場合。 条件付フィルタ利用には、2つの方法があります。 CMAP パラメータ群を上記例のように使用する方法;それぞれのCMAPパラメータは、 サーキットレベルの情報に基づいて、利かせるフィルタを指定します。 他の方法は、CFI スクリプトに記述し、アプリケーションプロトコルの、 (MIME ベース)メッセージヘッダ内の情報に基づき、フィルタを選択します。 CFIは、アプリケーションプロトコル(HTTP, NNTP, SMTP, POP のようにMIMEまたは、RFC822に基づくメッセージフォーマットをもつ) にかかわらず、適用できます。 これは、半分だけできています。 CFI 使用法におけるドキュメント、日本語のみですが... ;-)
[最終更新日: 2001年5月17日]