web-dev-qa-db-fra.com

Comment puis-je installer SSL sur localhost dans Ubuntu?

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?

26
Ritesh

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 .. !!

81
Ritesh