Setting Up An SSL Server With Apache2
Setting Up An SSL Server With Apache2
Ref:https://debian-administration.org/article/349/Setting_up_an_SSL_server_with_Apache2
With the introduction of the Apache2 packages in Debian it is much simpler to create and use a
secure SSL protected webserver than in the old days with Apache 1.3, here we'll show how it is done.
If you have Apache 2.x installed already then you're good to go as you don't need anything extra
installed.
Once the server is installed you need to do three things to get a working SSL setup:
Generating A Certificate
Generating a certificate from scratch will give you something which will be used to protect the traffic
exchanged between clients and your server, however it will be signed by a untrusted certificate
authority so it will generate warnings.
Importing a paid and "trusted" certificate will avoid this problem, but that is beyond the scope of this
simple introduction.
Generating an SSL certificate for Apache2 may be accomplished using the apache2-ssl-certificate
script. This will ask you questions interactively then generate the certificate file appropriately.
Here's a sample session:
earth:~# apache2-ssl-certificate
If you want your certificate to expire after x days call this programm
with -days x
Generating a 1024 bit RSA private key
............++++++
..........................++++++
writing new private key to '/etc/apache2/ssl/apache.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:
State or Province Name (full name) [Some-State]:Scotland
Locality Name (eg, city) []:Edinburgh
Organization Name (eg, company; recommended) []:Steve Kemp
Organizational Unit Name (eg, section) []:
server name (eg. ssl.domain.tld; required!!!) []:earth
Email Address []: [email protected]
Enabling SSL Support
To use the SSL facilities of Apache2 you must enable the module mod_ssl, this can be achieved using
the helper tool a2enmod (We've previously discussed the Apache2 helper scripts.)
As root run:
Once this is done you'll have Apache setup to accept SSL connections, but the server will still only be
listening for incoming HTTP requests on port 80 - and not SSL connections on port 443. To fix this
you must add a line to the file /etc/apache2/ports.conf:
Listen 443
With these two steps out of the way you now have an Apache setup which will listen for and accept
SSL connections. The next step is to modify your virtualhosts to use it.
With a certificate setup, and the server updated to load and listen for incoming SSL connections
you're almost finished. The final step is to ensure that your virtual hosts, or main host, will accept
SSL options.
I use virtual hosts upon my machine and this just means adding a couple of options to each one I
wish to use SSL:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
NameVirtualHost *:443
NameVirtualHost *:80
<VirtualHost *:80>
ServerName earth.my.flat
DocumentRoot /var/www/
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName earth.my.flat
DocumentRoot /var/www/
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
</VirtualHost>