HOME / コンピュータTips / Solaris / stunnel

Date: 2018/12/16 |  このエントリーをはてなブックマークに追加  |  Tags: Solaris opensolaris stunnel

Stunnelのインストール

Blastwave.orgのcswパッケージを利用してインストールする

pkg-get -i stunnel

クライアントとして利用

Stunnelをクライアントモードとして利用すると、次のようなことができる。

  • SSLに対応していないクライアントソフトを、SSLでしか利用できないサーバに接続する。

注意事項として、

  • 接続するクライアントコンピュータからみると、SSLで接続する先のサーバのポートがlocalhostに立っているようにみえる。
    • つまり、localhost:80(非SSL)→remote_server:443(SSL)のように見える。
  • セッションレスである

利用できるプロトコルはTCPであれば大抵可能である。

  • httpをhttpsへ
  • pop3をpop3 over sslへ
  • imap4をimap4 over sslへ
  • smtpをsmtp over sslへ

等々。

stunnel clientとssh portforwarderとの違い

全然違う技術であるが、ユーザ的には似たように見えるので整理。

利用者側からみると、次のような違いがある。

  • ssh portforwarderは、必要なときに、まずリモートサーバに接続をしなくてはならない。
  • stunnelは、クライアントに常駐し、事前処理がいらない。

あくまでもstunnenlをクライアントとして利用する話である。

ssh portforwarderstunnel
基板技術sshssl
常駐プログラムないある
事前処理利用前にリモートサーバへ接続する何もいらない
Port Listen動作時のみ動作時のみ
^利用ユーザが利用したいときのみ、起動するコンピュータが起動している間ずっと起動している。
Port 再利用接続先を変えれば良いので簡単接続先を臨機応変に変えられないので面倒

実は、最後のことが言いたかったのだが、stunnelはそれゆえ、複数のサーバに接続する環境を用意したい場合、ポート番号を浪費するしかないのだ。

クライアントモードとしてセットアップ

cswのstunnelは、下記に設定ファイルがある。

/opt/csw/etc/stunnel

stunnel.conf-sampleをコピーして、stunnel.confという名前で利用する。

Clientなのでcertはいらない。

;cert = /opt/csw/etc/stunnel/mail.pem

最初の方は、debugレベルを上げておくと良いだろう。

debug = 7

ログの書き出し先

output = /var/log/stunnel.log

クライアントモードに設定

client = yes

サーバの設定を無効にする。

;[pop3s]
;accept  = 995
;connect = 110

;[imaps]
;accept  = 993
;connect = 143

;[ssmtp]
;accept  = 465
;connect = 25

;[https]
;accept  = 443
;connect = 80
;TIMEOUTclose = 0

後は、下記に任せて、Clientモードの設定を記述する。

実行

stunnelはchrootを利用したjailを作成して起動するが、デフォルトの設定は、下記のディレクトリにnobody:nogroupでpidファイルを出力する。

そこで、

chmod o+rwx /opt/csw/var/lib/stunnel

をして、Permissionを変更。

あとは、MANIFESTはないので適当なシェルスクリプトを作り、実行しなくてはいけない。

env LD_LIBRARY_PATH=/opt/csw/lib /opt/csw/bin/stunnel

httpしか利用できないクライアントソフトをhttpsでしか受け付けないサーバに接続

一体、こんな環境は何のためにあるのか不思議であろうが、存在するのだ(笑)

利用シーンクライアントサーバ
emacsのpukiwikiモードをWikiPlusの編集用URLで利用するemacsのhttp.elWikiPlusの編集用URL

等々、結局は、何かの理由でSSLがしゃべれないClientを、SSLでしかしゃべらせたくないサーバに接続するためのものとなる。

で・・・たとえば、次のようにバインド

クライアント側(非SSL)サーバ側(SSL)
localhost:10800pro1.wikiplus.jp:443
localhost:10801basic1.wikiplus.jp:443

設定例

[wpro1]
accept  = localhost:10800
connect = pro1.wikiplus.jp:443
TIMEOUTclose = 0
[wbasic1]
accept  = localhost:10801
connect = basic1.wikiplus.jp:443
TIMEOUTclose = 0

サーバとして利用

後日、記述。


コンピュータTips/Solaris

Recent Updates