stunnel:SSL到SSL? (用于smtp / imap)

我如何configurationstunnel以获得SSL连接,然后连接到不同服务器上的SSL端口?

这是我的设置:

我们的ISP服务器“邮件服务器”支持SSL上的smtp / imap。 (不是starttls,只是在ssl上)

但是,我有一大堆只信任特定的内部根证书的客户端机器。 因此,他们无法连接到“邮件服务器”。

对于这些客户端机器,我想制作一个专用的“邮件隧道”主机,使用stunnel通过内部签名的SSL证书进行收听,然后使用第二个SSL连接将数据转发到“邮件服务器”。

可以这样做吗?

Ubuntu Server 10.10的具体步骤是什么? (我不太熟悉持久的服务configuration。)

谢谢

我对10.10的细节并不熟悉,但是我认为它与Debian非常接近。

有一件事你可以做,基本上设置分开stunnelconfiguration。 On接受SSL,并将其转发到本地端口,另一个侦听该本地端口,然后将SSL连接到外部主机。 这两个可以绑定到回送接口,所以未encryption的数据不会通过networking。 请记住,你基本上是在对你自己进行MITM攻击。 当我用一个人正在开发的Web服务帮助诊断一些问题时,我使用了这样的设置。

Debian / Ubuntu中的stunnel的打包版本应该使这个很简单。 启动脚本基本上会为/ etc / stunnel4中的每个configuration文件(* .conf)启动一个stunnel实例。 所以你可以把两个单独的configuration放在/ etc / stunnel4中,生成你的密钥,重启stunnel,它应该可以工作。

所以这里是接受SSL的第一个configuration

; /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 

你的第二个实例创build传出连接。

 ; /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 

为服务器生成文件名。

 # 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-----