Vérifier que les paquets nécessaires sont déjà installés (libssl0.9.8, openssl, ssl-cert) :
- dpkg -l | grep ssl
Chaque paquet doit apparaitre avec les deux lettres ii
en suffixe si c’est déjà le cas. Il sont normalement sensés déjà être installés.
Dans le cas contraire, installer openSSL
- sudo apt-get install openssl
Création d’un certificat auto-signé
Afin de pouvoir utiliser une connexion ssl, il est nécessaire d’avoir un certificat signé qui peut coûter très cher. Dans notre cas nous allons créer un certificat auto-signé, considéré comme non sûr par les navigateurs mais suffisant pour obtenir une connexion SSL au serveur.
On va créer le certificat nécessaire dans le répertoire /etc/apache2/ssl
que l’on crée s’il n’existe pas :
- sudo mkdir /etc/apache2/ssl
Puis nous allons y créer notre certificat :
- sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
Il faut alors répondre à une question demandant le nom d’hôte du serveur.
Votre certificat se trouve donc à l’emplacement /etc/apache2/ssl/apache.pem
.
Configuration spécifique d’apache
Dans un premier temps il est nécessaire que le serveur apache écoute sur le port 443. Pour cela il suffit d’éditer le ficher /etc/apache2/ports.conf
et vérifier que la ligne Listen 443
y soit présente.
La meilleur manière de l’intégrer est de l’écrire de la sorte :
- <IfModule mod_ssl.c>
- Listen 443
- </IfModule>
Ainsi, lors de la désactivation (volontaire ou non) du module SSL d’Apache, la configuration restera correcte et ne plantera pas le serveur.
Dans un second temps il est nécessaire de créer un virtualhost Apache prenant en compte notre certificat ssl. Debian et Ubuntu en fournisse un par défaut (/etc/apache2/sites-available/default-ssl
) que nous allons modifier pour tester.
- sudo nano /etc/apache2/sites-available/default-ssl
On vérifie que le contenu suivant au moins y soit présent (commentez avec le caractère dièse "#
" toute référence à d’autres certificats :
- <IfModule mod_ssl.c>
- <VirtualHost _default_:443>
- ServerAdmin webmaster@localhost
- DocumentRoot /var/www
- <Directory />
- Options FollowSymLinks
- AllowOverride None
- </Directory>
- <Directory /var/www/>
- Options Indexes FollowSymLinks MultiViews
- AllowOverride None
- Order allow,deny
- allow from all
- </Directory>
- ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
- <Directory "/usr/lib/cgi-bin">
- AllowOverride None
- Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
- Order allow,deny
- Allow from all
- </Directory>
- ErrorLog /var/log/apache2/error.log
- # Possible values include: debug, info, notice, warn, error, crit,
- # alert, emerg.
- LogLevel warn
- CustomLog /var/log/apache2/ssl_access.log combined
- # SSL Engine Switch:
- # Enable/Disable SSL for this virtual host.
- SSLEngine on
- SSLCertificateFile /etc/apache2/ssl/apache.pem
- </VirtualHost>
- </IfModule>
Activation finale et redémarrage du serveur apache
Puis vous pouvez activer le module ssl pour Apache, le virtualhost ssl et redémarrer Apache :
- a2enmod ssl
- a2ensite default-ssl
- sudo /etc/init.d/apache2 restart
Il est ensuite possible de tester que cela fonctionne en allant à l’adresse : https://www.domaine.tld:443
ou https://www.domaine.tld
.
Votre navigateur devrait spécifier que le certificat n’est pas considéré comme sûr mais vous permettre de voir et d’accepter le certificat afin de pouvoir avoir accès à la page en question (qui devrait être la même sans le "s" à http et sans le :443 en fin d’adresse).