web-dev-qa-db-ja.com

stunnel:SSL-to-SSL? (smtp / imapの場合)

SSL接続を許可するようにstunnelを構成し、別のサーバーのSSLポートに接続するにはどうすればよいですか?

これが私の設定です:

私たちのISPのサーバー「メールサーバー」はSSL経由のsmtp/imapをサポートしています。 (starttlsではありません。sslのすぐ上です。)

しかし、特定の内部ルート証明書のみを信頼するクライアントマシンがたくさんあります。したがって、「メールサーバー」に接続することはできませんできません

これらのクライアントマシンでは、stunnelを使用して社内の署名付きSSL証明書でリッスンし、2番目のSSL接続を使用してデータを「メールサーバー」に転送する専用の「メールトンネル」ホストを作成したいと思います。

これはできますか?

Ubuntu Server 10.10の具体的な手順は何ですか? (私は永続的なサービス構成にあまり精通していません。)

ありがとうございました

3
nonot1

私は10.10の詳細に精通していませんが、Debianにかなり近いと思います。

できることの1つは、基本的にstunnel構成を分離するように設定することです。その上でSSLを受け入れ、それをローカルポートに転送し、別のポートでそのローカルポートをリッスンしてから、外部ホストにSSL接続を確立します。これら2つはループバックインターフェイスにのみバインドできるため、暗号化されていないデータがネットワークを通過することはありません。基本的に、自分自身に対してMITM攻撃を実行していることに注意してください。ある人が開発しているWebサービスの問題の診断を手伝っているときに、このような設定を使用しました。

Debian/Ubuntuのstunnelのパッケージバージョンは、これを簡単にするはずです。起動スクリプトは基本的に、/ etc/stunnel4にあるすべての構成ファイル(* .conf)のstunnelのインスタンスを開始します。したがって、2つの別々の構成を/ etc/stunnel4に配置し、キーを生成し、stunnelを再起動すると、機能するはずです。

これがSSLを受け入れる最初の設定です

; /etc/stunnel/ssl_in.conf
; Certificate/key is needed in server mode and optional in client mode
cert = /etc/stunnel/srv1.keys

; Some security enhancements for UNIX systems - comment them out on Win32
chroot = /var/lib/stunnel4/
setuid = stunnel4
setgid = stunnel4

; PID is created inside chroot jail
pid = /srv1.pid

debug = 4
output = /var/log/stunnel4/ssl_in.log

; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

[ssl_in_imap]
accept  = 993
connect = localhost:10993

[ssl_in_smtp]
accept  = 587
connect = localhost:10587

発信接続を作成する2番目のインスタンス。

; /etc/stunnel/ssl_out.conf
; Some security enhancements for UNIX systems - comment them out on Win32
chroot = /var/lib/stunnel4/
setuid = stunnel4
setgid = stunnel4

; PID is created inside chroot jail
pid = /clt1.pid

; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

client=yes
CAfile = clt1.ca
verify = 0


[ssl_out_imap]
accept  = 10993
connect = remote_server:993

[ssl_out_smtp]
accept  = 10587
connect = remote_server:10587

サーバーのfilename.keysを生成します。

# Create a new key and preparte a CSR 
openssl req -new -keyout filename.pem -out filename.csr
# Remove the passphrase from the key
openssl rsa -in filename.pem -out filename.key
# Self sign
openssl x509 -in filename.csr -out filename.cert -req -signkey filename.key -days 720
# combine files to get the keys file stunnel needs.
cat filename.key filename.cert > filename.keys

ファイルは次のようになります。

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDkwzyKrPRXGyvEgITm/7oC9fDU4Y7L9mtMXmcIR98cp0g1ndcz
...
qhP3y97k67EVdSC+92pIGrAL7kBWckpJ2HP1El4KeZg=
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICHzCCAYgCCQDq/33qh7Dq5TANBgkqhkiG9w0BAQUFADBUMQswCQYDVQQGEwJV
...
ebbhvhYLx1KkhD8/dXEbU0+kNg==
-----END CERTIFICATE-----
4
Zoredache