Stunnel

From Indie IT Wiki

Stunnel is a proxy designed to add TLS encryption functionality to existing clients and servers without any changes in the programs' code. Its architecture is optimized for security, portability, and scalability (including load-balancing), making it suitable for large deployments.

The following example is for a Gentoo installation.

Generate Keys

su - root
cd
mkdir stunnel-keys
cd stunnel-keys
openssl genrsa -des3 -out sec-email-co.skey 1024
openssl rsa -in sec-email-co.skey -out sec-email-co.key
openssl req -new -key sec-email-co.key -out mydomain.csr

Send Off Keys For Approval

Email secure email company using stunnel copy of mydomain.csr (Certificate Signing Request)

Install Software

emerge stunnel

Configure Software

cd /etc/stunnel/
cp -av stunnel.conf stunnel.conf.dist
> stunnel.conf
nano stunnel.conf

#####################################################################
#
# sec-email-co Stunnel configuration file
#
#####################################################################
pid = /var/run/stunnel/stunnel.pid
CAfile = /etc/stunnel/certs/ca.crt
cert = /etc/stunnel/certs/sec-email-co.pem
key = /etc/stunnel/certs/sec-email-co.key
verify = 1
service = stunnel
output = /var/log/sec-email-co_stunnel.log
debug = 7
[cjsm-outbound]
accept = 127.0.100.1:25
client = yes
connect = smtp.sec-email-co.net:25
protocol = smtp
sslVersion = TLSv1
[cjsm-inbound]
client = no
accept = 10.0.0.2:4545
connect = 192.168.0.200:25
protocol = smtp
##########################################################

Copy Keys To Software

mkdir /etc/stunnel/certs
cp -av /root/stunnel-keys/sec-email-co* /etc/stunnel/certs/
cp -av /root/stunnel-keys/mydomain.csr /etc/stunnel/certs/

Copy Secure Email Company Certificate Authority Key (you will have been sent this after sending yours first) to same directory

cp -av /root/stunnel-keys/CA /etc/stunnel/certs/ca.crt

Create Log File

touch /var/log/secure-email-co_stunnel.log
chown stunnel /var/log/secure-email-co_stunnel.log
chgrp stunnel /var/log/secure-email-co_stunnel.log

Add Software To Startup

rc-update add stunnel default

Start The Stunnel Software

/etc/init.d/stunnel start

Check Software Running

netstat -ntap |grep 25

tcp        0      0 127.0.100.1:25          0.0.0.0:*               LISTEN      8949/stunnel        
tcp        0      0 192.168.0.200:25        0.0.0.0:*               LISTEN      6646/sendmail: acce 
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      6646/sendmail: acce 
ping 127.0.100.1

PING 127.0.100.1 (127.0.100.1) 56(84) bytes of data.
64 bytes from 127.0.100.1: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 127.0.100.1: icmp_seq=2 ttl=64 time=0.051 ms
64 bytes from 127.0.100.1: icmp_seq=3 ttl=64 time=0.054 ms
telnet 127.0.100.1 25

Trying 127.0.100.1...
Connected to 127.0.100.1.
Escape character is '^]'.
220 smtp.secure-email-co.net (2) ESMTP
EHLO test
250-smtp.secure-email-co.net Hello test [123.456.789]
250-SIZE 15728640
250-DSN
250-PIPELINING
250-AUTH PLAIN LOGIN
250 HELP
mail from:<test@mydomain.com>
250 OK
rcpt to:<richard@secure-email-co.theirdomain.net>
250 Accepted
data 
354 Enter message, ending with "." on a line by itself
hello richard
.
250 OK id=1OBTXx-0007o7-9f
^]
telnet> quit
Connection closed.
tail /var/log/stunnel.log

2010.11.11 16:10:23 LOG6[8949:1073809744]: SSL connected: new session negotiated
2010.11.11 16:10:23 LOG6[8949:1073809744]: Negotiated ciphers: AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
2010.11.11 16:10:31 LOG7[8949:1073809744]: Socket closed on read
2010.11.11 16:10:31 LOG7[8949:1073809744]: SSL write shutdown
2010.11.11 16:10:31 LOG7[8949:1073809744]: SSL alert (write): warning: close notify
2010.11.11 16:10:31 LOG6[8949:1073809744]: SSL socket closed on SSL_shutdown
2010.11.11 16:10:31 LOG7[8949:1073809744]: Socket write shutdown
2010.11.11 16:10:31 LOG5[8949:1073809744]: Connection closed: 0 bytes sent to SSL, 0 bytes sent to socket
2010.11.11 16:10:31 LOG7[8949:1073809744]: secure-email-co-outbound finished (0 left)