Setup SSL Tunnel Using Stunnel on Ubuntu

The Stunnel program is designed to work as an SSL encryption wrapper between remote client and server. It can be used to add SSL functionality.

What Stunnel basically does is that it turns any insecure TCP port into a secure encrypted port using OpenSSL package for cryptography.

1.Update & Upgrade Ubuntu

apt-get update && apt-get upgrade

2.Install Stunnel on VPS

apt-get install stunnel4 -y

3.Create SSL Certificate

openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
cat key.pem cert.pem >> /etc/stunnel/stunnel.pem

4.configure Stunnel on VPS

vim /etc/stunnel/stunnel.conf

So overall the stunnel.conf file must contain the lines below:

client = no
accept = 8888
connect =
cert = /etc/stunnel/stunnel.pem

Note: The client = no part isn’t necessary, Stunnel by default is set to server mode.

Also, enable Stunnel automatic startup by configuring the “/etc/default/stunnel4” file


Finally, restart Stunnel for configuration to take effect, using this command:

/etc/init.d/stunnel4 restart

5.Install Squid Proxy

apt-get install squid3 -y

Configure Stunnel in Client

Using a SFTP client such as Filezilla, connect to your server and download the stunnel.pem file located in “/etc/stunnel/” directory to the client.

Install Stunnel on your choice of OS. Then go to the Stunnel folder and move the downloaded certificate stunnel.pem to Stunnel folder.

So stunnel.conf file in the client should look like this:

cert = stunnel.pem
client = yes
accept =
connect = [Server’s Public IP]:8888

Save and close the file and run stunnel.exe.

That’s it. Now when we want to connect to Squid proxy on our cloud server, we must configure our client to connect to, and Stunnel automatically connects us through a secure tunnel to the service specified for that port.

0 (0)
Article Rating (No Votes)
Rate this article
There are no attachments for this article.
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
Using renice and taskset to manage process priority and CPU affinity with Linux OEL 6.4
Viewed 506 times since Mon, Feb 17, 2020
RHEL: Building a custom kernel on RHEL 6
Viewed 1039 times since Sat, Jun 2, 2018
Split and Reassemble files
Viewed 1048 times since Mon, May 28, 2018
RHEL: Manually encrypting a filesystem with LUKS
Viewed 1193 times since Sun, May 27, 2018
20 Practical Examples of RPM Commands in Linux rpm
Viewed 1321 times since Mon, Feb 18, 2019
Prosty skaner portów TCP w bash
Viewed 964 times since Thu, May 24, 2018
How To: Create Self-Signed Certificate – OpenSSL
Viewed 541 times since Mon, Feb 18, 2019
Linux Cluster Tutorial
Viewed 549 times since Sat, Sep 29, 2018
RHEL: Reserved space on a ext2/ext3/ext4 filesystem
Viewed 2499 times since Sun, May 27, 2018
RHEL: Extending the maximum inode count on a ext2/ext3/ext4 filesystem
Viewed 1189 times since Sun, May 27, 2018