Le Blog de C-quad

Sécuriser l’accès au site via https – configuration d’apache

Nous allons ici voir comment sécuriser un site web fonctionnant sous apache en y ajoutant la possibilité de se connecter avec le protocole https.

Pour cela nous installerons le module « mod_ssh »

# yum install mod_ssl

Le protocole https utilise SSL et de ce fait il est nécessaire de générer les certificats qui seront installés. Si vous avez déjà une autorité de certification active vous pouvez passer à la suite directement.

Mise en place d’une autorité de certification (CA)

Création de l’autorité de certification (CA)

Nous allons créer la clé privée de l’autorité de certification qui nous permettra de produire des certificats auto-signé.

Le autorité de certification (CA) sera stocké dans /etc/pki/CA/cacert.pem, tandis que la clé privée du CA sera stockée dans /etc/pki/CA/private/cakey.pem:

# openssl req -new -x509 -days 365 -newkey rsa:1024 \
  -keyout /etc/pki/CA/private/cakey.pem \
  -out /etc/pki/CA/cacert.pem
# chmod 600 /etc/pki/CA/private/cakey.pem

Une copie de chaque certificat signé par l’autorité sera stockée dans /etc/pki/CA/newcerts, avec un nom correspondant au SN (Serial Number) de l’autorité avec l’extentsion .pem. Si ce dossier n’est pas présent, il est nécessaire de le créer :

# mkdir /etc/pki/CA/newcerts

Le fichier /etc/pki/CA/index.txt liste tous les certificats qui ont été signés, si ce fichier n’est pas présent, il est la aussi nécessaire de le créer :

# touch /etc/pki/CA/index.txt

Le fichier /etc/pki/CA/serial contient le prochain numéro de série disponible, étant donné que nous venons de mettre en place l’autorité le prochain numéro de série sera le 1 :

# echo 01 > /etc/pki/CA/serial

Voila l’autorité de certificat est prête à délivrer des certificats auto-signé, nous allons donc pouvoir créer notre certificat pour apache.

Création du certificat pour apache

Création du certificat

Il est nécessaire de créer un certificat SSL.Voici la démarche à suivre :

 # cd /etc/pki/tls/certs
 # openssl genrsa -des3 -out apachekey.pem 2048

Génération du CSR (Certificate Signing Request)

# openssl req -new -key apachekey.pem -out apachekey.csr
Enter pass phrase for apachekey.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) [XX]:FR
State or Province Name (full name) []:France
Locality Name (eg, city) [Default City]:Fretin
Organization Name (eg, company) [Default Company Ltd]:C-quad Company Ltd
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:cquad.dyndns.org
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Créer le certificat pour le serveur web

Il est nécessaire de signer le CSR pour créer le certificat du serveur web.

# openssl ca -in apachekey.csr -out apachecert.pem
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
 Serial Number: 1 (0x1)
 Validity
 Not Before: Feb  6 15:51:39 2011 GMT
 Not After : Feb  6 15:51:39 2012 GMT
 Subject:
 countryName               = FR
 stateOrProvinceName       = France
 organizationName          = C-quad Company Ltd
 commonName                = cquad.dyndns.org
 emailAddress              =
 X509v3 extensions:
 X509v3 Basic Constraints:
 CA:FALSE
 Netscape Comment:
 OpenSSL Generated Certificate
 X509v3 Subject Key Identifier:
 98:D8:CF:53:5D:0D:5C:BE:E8:87:ED:01:0C:CA:71:1B:32:94:80:60
 X509v3 Authority Key Identifier:
 keyid:E4:04:44:36:1A:A3:1C:F1:D5:6A:5A:C2:CA:E6:DC:7D:24:EF:FD:41

Certificate is to be certified until Feb  6 15:51:39 2012 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Installer le certificat SSL

Copier la clé et le certificat dans /etc/pki/tls/http/ :
# cp apachecert.pem /etc/pki/tls/http/
# cp apachekey.pem /etc/pki/tls/http/

Update VirtualHost as follows:

<VirtualHost cquad.dydns.org:443>
    SSLEngine On
    SSLCertificateFile /etc/pki/tls/http/apachecert.pem
    SSLCertificateKeyFile /etc/pki/tls/http/apachekey.pem
    SSLProtocol All -SSLv2
    SSLCipherSuite HIGH:MEDIUM:!aNULL:+MD5
    DocumentRoot "/var/www/html/ssl"
    ServerName cquad.dyndns.org:443
</VirtualHost>

Attention avec cette configuration, au démarrage d’apache la passphrase qui a été renseignée sera demandée pour décrypter la clé. Si vous redemarrez souvent ce service ou l’ordinateur, il est préférable de supprimer la passphrase avec les actions suivantes :

# cp apachekey.pem apachekey.pem.org
# openssl rsa -in apachekey.pem.org -out apachekey.pem
Enter pass phrase for apachekey.pem.org:
writing RSA key

De ce fait apache ne demandera plus la passphrase. Pour le vérifier, il suffit d’afficher le contenu de la clé il ne doit plus apparaitre ce type de choses :

Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,E895E09547914F04

5 réponses à to “Sécuriser l’accès au site via https – configuration d’apache”

Laisser un commentaire