SSL Certificates with Apache on Debian & Ubuntu
Updated by Nick Brewer
This guide will show you how to enable SSL to secure websites served through Apache on Debian and Ubuntu.
Before You Begin
This guide assumes that you are running Apache 2.4 or higher on Debian 8 or Ubuntu 14.04 or above. Prior to following this guide, ensure that the following steps have been taken on your Linode:
Familiarize yourself with our Getting Started guide and complete the steps for setting your Linode’s hostname and timezone.
Complete our Hosting a Website guide, and create a site that you wish to secure with SSL.
If hosting multiple websites with commercial SSL certificates on the same IP address, use the Server Name Identification (SNI) extension of TLS. SNI is accepted by most modern web browsers. If you expect to receive connections from clients running legacy browsers (like Internet Explorer for Windows XP), you will need to contact support to request an additional IP address.
Configure Apache to use the SSL Certificate
Edit the virtual host configuration files located in
/etc/apache2/sites-availableto provide the certificate file paths. For each virtual host, replicate the configuration shown below. Replace each mention of
example.comwith your own domain. You will also need to ensure that the
SSLCACertificateFilevalue is configured to point to the
ca-certificates.crtfile updated in the previous step:
1 2 3 4 5 6 7 8 910111213
<VirtualHost *:443> SSLEngine On SSLCertificateFile /etc/ssl/certs/example.com.crt SSLCertificateKeyFile /etc/ssl/private/example.com.key SSLCACertificateFile /etc/ssl/certs/ca-certificates.crt #If using a self-signed certificate, omit this line ServerAdmin email@example.com ServerName www.example.com ServerAlias www.example2.com #If using alternate names for a host DocumentRoot /var/www/html/example.com/public_html/ ErrorLog /var/www/html/example.com/log/error.log CustomLog /var/www/html/example.com/log/access.log combined </VirtualHost>
Ensure that the Apache SSL module is enabled, and enable the virtualhost configuration:
a2enmod ssl a2ensite example.com
service apache2 restart
If troubleshooting issues, a system reboot may be required.
Test Your Configuration
After configuration, some browsers may display the site correctly although errors still exist. Test your SSL configuration using the test page at your certificate issuer’s website, then perform the following steps.
Check for errors using
openssl s_client -CApath /etc/ssl/certs/ -connect example.com:443
Perform a deep analysis through the Qualys SSL Labs SSL Server Test
You should now be able to visit your site with SSL enabled.
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
- Apache Web Server on Ubuntu 14.04 LTS
- Apache Web Server on Debian 8 (Jessie)
- Node.js Web Server Deployed within Docker
- SSL Certificates with Apache on CentOS 7
- Apache Web Server on Ubuntu 12.04 LTS (Precise Pangolin) - Deprecated
This guide is published under a CC BY-ND 4.0 license.