Je souhaite installer un certificat SSL sur mon hôte local dans un environnement Ubuntu car je ne peux pas travailler directement sur le serveur de production. Je dois mettre certaines conditions dans mon code selon que la page est HTTP ou HTTPS.
Comment puis-je faire ceci?
Activez le module Apache en tapant:
Sudo a2enmod ssl
Après avoir activé SSL, vous devrez redémarrer le serveur Web pour que la modification soit reconnue:
Sudo service Apache2 restart
Commençons par créer un sous-répertoire dans la hiérarchie de configuration d'Apache pour placer les fichiers de certificat que nous allons créer:
Sudo mkdir /etc/Apache2/ssl
Maintenant que nous avons un emplacement pour placer notre clé et notre certificat, nous pouvons les créer tous les deux en une seule étape en tapant:
Sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/Apache2/ssl/Apache.key -out /etc/Apache2/ssl/Apache.crt
La partie questions ressemble à ceci:
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Your Company
Organizational Unit Name (eg, section) []:Department of Kittens
Common Name (e.g. server FQDN or YOUR name) []:your_domain.com
Email Address []:[email protected]
Ouvrez le fichier avec les privilèges root maintenant:
Sudo nano /etc/Apache2/sites-available/default-ssl.conf
Une fois les commentaires supprimés, le fichier ressemble à ceci:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
En fin de compte, cela ressemblera à quelque chose comme ça. Les entrées ont été modifiées à partir du fichier d'origine:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName your_domain.com
ServerAlias www.your_domain.com
DocumentRoot /var/www/html
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/Apache2/ssl/Apache.crt
SSLCertificateKeyFile /etc/Apache2/ssl/Apache.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /var/www/html>
SSLOptions +StdEnvVars
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
Enregistrez et quittez le fichier lorsque vous avez terminé. Maintenant que nous avons configuré notre hôte virtuel compatible SSL, nous devons l'activer.
Sudo a2ensite default-ssl.conf
Nous devons ensuite redémarrer Apache pour charger notre nouveau fichier hôte virtuel:
Sudo service Apache2 restart
Voilà c'est maintenant exécuter votre site avec https .. !!