This page covers the use of Squid as a single tenant - i.e. with only one IP address. If you need to present different IP addresses for different parts of your organisation structure, see: Multi-tenant use of Squid with OpenAthens

This page concentrates on Linux. Other forwarding proxies are available and will work in similar ways.



 There are a couple of differences between Debian and Red Hat derived systems which are highlighted below. Other distros will be similar.


  1. Install the package: Squid. Most repositories include it, but you can also get binaries from CentOS 7 users will additionally need to install apache2-utlis for the htpasswd command
  2. Navigate to your install directory (/etc/squid)

  3. Create a password 

    1. > sudo htpasswd -c /etc/squid/passwd make_up_a_username
    2. Make a note of the username and password for later - you will need to tell OpenAthens what they are

  4. Edit squid.conf taking care to use the correct auth_param line for your distro

    # Prevent X-Forwarded-For being overwritten by Squid
    forwarded_for transparent
    # Setup ACLs for OpenAthens
    auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd # RHEL / CentOS based distros
    # auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd # Debian / Ubuntu based distros
    auth_param basic realm proxy
    acl authenticated proxy_auth REQUIRED
    # Allow authenticated access
    http_access allow authenticated
    # Deny all other access to this proxy
    http_access deny all
  5. Start Squid and set it to autostart according to your OS 

    Modern RHEL and Debian based distros now both use systemctl so are the same. Which was a pleasant surprise.

    sudo systemctl start squid
    sudo systemctl enable squid

  6. <squids_ip_address>:3128 should now show an error page generated by Squid

Securing the connection

You want to make sure that the inbound connection is limited to OpenAthens and this is secured using an X.509 client certificate. The process is a little different depending on which flavour of Linux you are using. 

You should register your server in DNS before generating the certificate request.

Red Hat based distros such as CentOS

7. Add the following to your squid.conf file:


# if certificate and key are in the same file use this one 
https_port cert=/etc/squid/ssl_cert/server.pem clientca=/etc/squid/ssl_cert/openathens-client.pem 

# if the certificate and key are in separate files, use this one
https_port cert=/etc/squid/ssl_cert/server.pem key=/etc/squid/ssl_cert/privatekey.pem clientca=/etc/squid/ssl_cert/openathens-client.pem #2

8. Set your firewall rules to

9. Securely pass our service desk the username and password you set up in step 3. 

Debian based distros such as Ubuntu

At the time of writing the Squid package supplied by Debian is not compiled with the -enable-ssl flag which means the https_port configuration directive is not available and a little more work is required. Since you can't use a simple configuration directive you need to front Squid with something such as stunnel (  

7.  >apt-get install stunnel4

8. Create /etc/stunnel/stunnel.conf:

setuid = stunnel4
setgid = nogroup
accept  =
#Don't need to expose squid directly to the internet.
connect =
cert = /etc/stunnel/server.pem
verify = 4

9. Add the following to your squid.conf file:


10. Set your firewall rules to

11. Securely pass our service desk the username and password you set up in step 3