:::: MENU ::::

Apache HTTP Server: Configurer HTTPS

Avec Apache HTTP Server, nous pouvons publier nos pages Web avec HTTPS (Hypertext Transfer Protocol Secure). Ici, nous allons voir comment faire.

Introduction

Actuellement, presque aucune page Web n’utilise HTTP. La plupart utilisent HTTPS. HTTPS est un protocole sécurisé qui sert (entre autres) à crypter les communications entre le client et le serveur.

Exigences précédentes

Nous avons besoin d’un serveur HTTP Apache installé et démarré.

Configuration

Installation d’outils

Nous aurons besoin d’installer deux outils, avec les commandes suivantes :

Éditeur Vi:

apt install -y vim

Navigateur Web de la console Links:

apt install -y links

Configuration du serveur HTTP Apache

Et maintenant, nous configurons Apache HTTP Server:

Nous activons le module Apache SSL:

a2enmod ssl

Et nous créons la configuration SSL avec:

a2ensite default-ssl

On démarre le serveur Apache avec:

service apache2 start

Ou on redémarre le serveur avec:

service apache2 restart

Création et configuration de certificats

Nous devons créer et configurer des clés et des certificats pour deux types d’entités:

  • L’Autorité de Certification (CA).
  • Le serveur Web dans lequel nous allons configurer HTTPS.

Autorité de Certification (CA)

Nous créons la clé de l’Autorité de Certification:

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537 -out cakey.pem

Nous faisons en sorte que la CA auto-signe son propre certificat:

openssl req -new -x509 -key cakey.pem -out cacert.pem -days 365

Il nous demandera ces données:

  • Country Name (2 letter code) [AU]:ES
  • State or Province Name (full name) [Some-State]:Madrid
  • Locality Name (eg, city) []:Madrid
  • Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany
  • Organizational Unit Name (eg, section) []:MySection
  • Common Name (e.g. server FQDN or YOUR name) []:localhost
  • Email Address []:me@myemail.com

En ce moment, nous avons ces deux éléments:

  • La clé CA (cakey.pem).
  • Le certificat auto-signé par l’Autorité de Certification, c’est-à-dire nous-mêmes (cacert.pem).

Nous avons maintenant besoin de certains répertoires pour que cette autorité signe le certificat Web.

mkdir demoCA
mkdir demoCA/certs
mkdir demoCA/crl
mkdir demoCA/newcerts
mkdir demoCA/private
touch demoCA/index.txt
echo 02 > demoCA/serial
mv cacert.pem demoCA/
mv cakey.pem demoCA/private/

Et avec cela, nous avons déjà les fichiers de l’Autorité de Certification (CA).

Serveur Web

Nous créons une paire de clés:

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -pkeyopt rsa_keygen_pubexp:65537 -out privkey-localhost.pem

Nous créons la demande de signature de certificat:

openssl req -new -key privkey-localhost.pem -out certreq-localhost.crs

Il nous demandera ces données:

  • Country Name (2 letter code) [AU]:ES
  • State or Province Name (full name) [Some-State]:Madrid
  • Locality Name (eg, city) []:Madrid
  • Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyCompany
  • Organizational Unit Name (eg, section) []:MySection
  • Common Name (e.g. server FQDN or YOUR name) []localhost
  • Email Address []:me@myemail.com

Nous n’entrons pas de valeur lors de la demande de Challenge password ou Optional company name.

Maintenant, nous envoyons la demande à l’Autorité de Certification et elle (nous) émettrons un certificat:

openssl ca -in certreq-localhost.crs -out cert-localhost.pem

Et puis nous répondons à tout avec “y”.

Nous configurons maintenant Apache pour utiliser ces certificats.

Tout d’abord, nous vérifions:

openssl verify -CAfile demoCA/cacert.pem cert-localhost.pem

Le système répond avec:

cert-localhost.pem: OK

Configuration de Apache HTTP Server pour utiliser SSL

Nous copions les fichiers importants:

cp cert-localhost.pem /etc/ssl/certs/
cp demoCA/cacert.pem /etc/ssl/certs/
cp privkey-localhost.pem /etc/ssl/private/

Nous éditons la configuration Apache SSL:

vi /etc/apache2/sites-available/default-ssl.conf

Nous modifions ces deux lignes avec le chemin de nos fichiers:

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Pour ces:

SSLCertificateFile /etc/ssl/certs/cert-localhost.pem
SSLCertificateKeyFile /etc/ssl/private/privkey-localhost.pem

Après ces deux, nous en introduisons un nouveau:

SSLCACertificateFile /etc/ssl/certs/cacert.pem

Nous avons enregistré et laissé Vi avec “:wq”.

Maintenant, nous effectuons un rechargement pour charger la configuration:

service apache2 reload

Si nous obtenons une erreur car le serveur est éteint, nous le démarrons avec:

service apache2 start

Test

Nous testons comme suit (à l’aide de la console de commande et du navigateur Web texte “Links” au lieu d’un navigateur Web graphique):

Nous chargeons l’URL sans HTTPS:

links http://localhost

Ensuite, nous faisons face à l’URL avec HTTPS:

links https://localhost

Il nous dira que le certificat est invalide (parce que nous l’avons créé nous-mêmes). Cliquez sur Oui et la page se chargera sans problème.

Remarque : Pour éviter ce message et pouvoir utiliser un navigateur Web courant comme Google Chrome sans aucun message d’alerte, nous avons besoin d’une autorité de certification pour valider le certificat que nous avons créé


So, what do you think ?