Dernière mise-à-jour : 2020/01/30 03:27
Weight: 3
Description: Candidates should be able to configure a web server to provide HTTPS.
Key Knowledge Areas:
Terms and Utilities:
SSL ( Secure Sockets Layers ) est utilisé pour sécuriser des transactions effectuées sur le Web et a été mis au point par :
SSL est indépendant du protocole utilisé et agit en tant que couche supplémentaire entre la couche Application et la couche Transport. Il peut être utilisé avec :
Le fonctionnement de SSL suit la procédure suivante :
Quand on parle de SSL, on parle de cryptologie.
On appelle PKI (Public Key Infrastucture, ou en français infrastructure à clé publique (ICP), parfois infrastructure de gestion de clés (IGC)) l’ensemble des solutions techniques basées sur la cryptographie à clé publique.
Les cryptosystèmes à clés publiques permettent de s'affranchir de la nécessité d'avoir recours systématiquement à un canal sécurisé pour s'échanger les clés. En revanche, la publication de la clé publique à grande échelle doit se faire en toute confiance pour assurer que :
Ainsi, il est nécessaire d'associer au bi-clé (ensemble clé publique / clé privée) un certificat délivré par un tiers de confiance : l'infrastructure de gestion de clés.
Le tiers de confiance est une entité appelée communément autorité de certification (ou en anglais Certification authority, abrégé CA) chargée d'assurer la véracité des informations contenues dans le certificat de clé publique et de sa validité.
Pour ce faire, l'autorité signe le certificat de clé publique à l'aide de sa propre clé en utilisant le principe de signature numérique.
Le rôle de l'infrastructure de clés publiques est multiple et couvre notamment les champs suivants :
Une infrastructure à clé publique est en règle générale composée de trois entités distinctes :
Pour palier aux problèmes liés à des clefs publiques piratées, un système de certificats a été mis en place.
Le certificat permet d’associer la clef publique à une entité ou une personne. Les certificats sont délivrés par des Organismes de Certification.
Les certificats sont des fichiers divisés en deux parties :
La structure des certificats est normalisée par le standard X.509 de l’Union internationale des télécommunications.
Elle contient :
Le Certificat est signé par l'autorité de certification:
La vérification se passe ainsi:
Afin de pouvoir configurer le serveur apache en mode ssl, il est necessaire d'installer les paquets mod_ssl et openssl. Le paquet openssl étant déjà installé, installez donc mod_ssl :
[root@centos6 ~]# yum install mod_ssl
Dans le cas où vous souhaitez générer vos propres clés, vous devez d'abord générer une clé privée, nécessaire pour la création d'un Certificate Signing Request. Le CSR doit alors être envoyé à une des sociétés faisant autorité en la matière afin que celle-ci puisse vous retourner votre certificat définitif. Ce service est payant. C'est ce certificat définitif qui est utilisé pour des connexions sécurisées.
Saisissez donc la commande suivante pour générer votre clé privée :
[root@centos6 ~]# openssl genrsa -out www.homeland.net.key 1024 Generating RSA private key, 1024 bit long modulus ........................................++++++ ..............++++++ e is 65537 (0x10001)
Générer maintenant votre CSR :
[root@centos6 ~]# openssl req -new -key www.homeland.net.key -out www.homeland.net.csr 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) []:VAR Locality Name (eg, city) [Default City]:Toulon Organization Name (eg, company) [Default Company Ltd]:Linux E-Learning Organizational Unit Name (eg, section) []:Training Common Name (eg, your name or your server's hostname) []:centos.fenestros.loc Email Address []:root@localhost Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
et répondez aux questions qui vous sont posées. Notez bien la réponse à la question Common Name. Si vous ne donnez pas votre FQDN, certains navigateurs ne gèreront pas votre certificat correctement. Vous pouvez maintenant envoyé votre CSR à la société que vous avez choisie. Quand votre clé .crt vous est retournée, copiez-la, ainsi que votre clé privée dans le répertoire /etc/pki/tls/certs/.
Sans passer par un prestataire externe, vous pouvez signer votre CSR avec votre propre clé afin de générer votre certificat :
[root@centos6 ~]# openssl x509 -req -days 365 -in www.homeland.net.csr -signkey www.homeland.net.key -out www.homeland.net.crt Signature ok subject=/C=FR/ST=VAR/L=Toulon/O=Linux E-Learning/OU=Training/CN=centos.fenestros.loc/emailAddress=root@localhost Getting Private key
Cette procédure va générer trois fichiers dont votre clé privée et un certificat – une clé ayant une extension .crt.
Il convient ensuite de copier ces deux fichiers dans l'arborescence /etc/pki/tls :
[root@centos6 ~]# cp /root/www.homeland.net.key /etc/pki/tls/private/
[root@centos6 ~]# cp /root/www.homeland.net.crt /etc/pki/tls/certs/
Créez maintenant le répertoire qui va contenir le site sécurisé :
# mkdir /www/ssl
Créez le fichier index.html pour notre site sécurisé :
# vi /www/ssl/index.html
Editez le fichier index.html ainsi :
<html> <body> <center>Accueil du site SSL</center> </body> </html>
En consultant le contenu du répertoire /etc/httpd/conf.d, vous constaterez un fichier ssl.conf.
Ouvrez ce fichier et modifiez la ligne suivante :
#DocumentRoot "/var/www/html"
en :
DocumentRoot "/www/ssl"
Cette directive indique que la racine du site sécurisé sera /www/ssl.
Définissez ensuite les droits d'accès à ce site en ajoutant la section suivante à l'emplacement indiqué :
<Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> # Ajoutez la section suivante <Directory "/www/ssl"> Order allow,deny Allow from all </Directory> # Fin <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory>
Dernièrement modifiez les deux lignes suivantes :
SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
en :
SSLCertificateFile /etc/pki/tls/certs/www.homeland.net.crt SSLCertificateKeyFile /etc/pki/tls/private/www.homeland.net.key
respectivement.
Sauvegardez votre fichier et redémarrez votre serveur apache :
[root@centos6 ~]# service httpd restart Arrêt de httpd : [ OK ] Démarrage de httpd : [ OK ]
Passez en revue les directives contenues dans le fichier ssl.conf en utilisant le Manuel en ligne d'Apache.
Pour tester votre serveur apache en mode SSL saisissez la commande suivante :
[root@centos6 ~]# openssl s_client -connect www.homeland.net:443 CONNECTED(00000003) depth=0 C = FR, ST = VAR, L = Toulon, O = Linux E-Learning, OU = Training, CN = centos.fenestros.loc, emailAddress = root@localhost verify error:num=18:self signed certificate verify return:1 depth=0 C = FR, ST = VAR, L = Toulon, O = Linux E-Learning, OU = Training, CN = centos.fenestros.loc, emailAddress = root@localhost verify return:1 --- Certificate chain 0 s:/C=FR/ST=VAR/L=Toulon/O=Linux E-Learning/OU=Training/CN=centos.fenestros.loc/emailAddress=root@localhost i:/C=FR/ST=VAR/L=Toulon/O=Linux E-Learning/OU=Training/CN=centos.fenestros.loc/emailAddress=root@localhost --- Server certificate -----BEGIN CERTIFICATE----- MIICqTCCAhICCQD2dnaBu4RrlTANBgkqhkiG9w0BAQUFADCBmDELMAkGA1UEBhMC RlIxDDAKBgNVBAgMA1ZBUjEPMA0GA1UEBwwGVG91bG9uMRkwFwYDVQQKDBBMaW51 eCBFLUxlYXJuaW5nMREwDwYDVQQLDAhUcmFpbmluZzEdMBsGA1UEAwwUY2VudG9z LmZlbmVzdHJvcy5sb2MxHTAbBgkqhkiG9w0BCQEWDnJvb3RAbG9jYWxob3N0MB4X DTEzMDcxNTA5MDUzMloXDTE0MDcxNTA5MDUzMlowgZgxCzAJBgNVBAYTAkZSMQww CgYDVQQIDANWQVIxDzANBgNVBAcMBlRvdWxvbjEZMBcGA1UECgwQTGludXggRS1M ZWFybmluZzERMA8GA1UECwwIVHJhaW5pbmcxHTAbBgNVBAMMFGNlbnRvcy5mZW5l c3Ryb3MubG9jMR0wGwYJKoZIhvcNAQkBFg5yb290QGxvY2FsaG9zdDCBnzANBgkq hkiG9w0BAQEFAAOBjQAwgYkCgYEAsgGH/CeTmW6E+3O2SRf4tVmPAcKKL5MAC3nl iZvKGE9+QSA1uD9QSxhtTkSaoQbgxfSxTxoZ533eRdwNFgeLbeUqhx8yhOwfzSV5 cNKE3ai4reIOcCMNxjxBWTFj1AH75NHlVH//S7u82GG+pWu+dhC29k+AasxHt2SD xA9wUv8CAwEAATANBgkqhkiG9w0BAQUFAAOBgQCdy/bJKFYCS9LFvEvqcUNizRjj GJaCqzjDdaC/rpYSDJgFIdt/UWu+DwGVylpSUsQBuG3ASmGblto3JbX2FXdjRj7N lcxAwtsna9bAoznc2pmRsoRaUKrohiT5iciK2r67uhNfrfgiCWTTpW7L+NZq0s1I O5dJLH16BMPaTkTRjg== -----END CERTIFICATE----- subject=/C=FR/ST=VAR/L=Toulon/O=Linux E-Learning/OU=Training/CN=centos.fenestros.loc/emailAddress=root@localhost issuer=/C=FR/ST=VAR/L=Toulon/O=Linux E-Learning/OU=Training/CN=centos.fenestros.loc/emailAddress=root@localhost --- No client certificate CA names sent --- SSL handshake has read 1435 bytes and written 310 bytes --- New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA Server public key is 1024 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : DHE-RSA-AES256-SHA Session-ID: 213134CCEB89F17051CDB476CAFB6EDE6173CB0CF74ED4FF219DECC27E1C8B60 Session-ID-ctx: Master-Key: 6A097818500070788FCFC4E9986966628D40F662B8448D24F83FCF1208FF205798D372E5FC6D7754A7C648841668134E Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket: 0000 - ab 27 98 fc 21 1c 09 d6-92 b9 b8 0c 52 7c ef 69 .'..!.......R|.i 0010 - 9a cf df f1 40 46 12 89-60 18 ea 42 72 c9 fa 20 ....@F..`..Br.. 0020 - 2d 91 96 66 b3 3a dc 11-da 3d 8c 11 fc 02 f9 d7 -..f.:...=...... 0030 - e3 96 cd 6f 61 69 e2 01-b0 ab c2 03 a4 e7 65 93 ...oai........e. 0040 - 5b da 38 dc 66 ad 7c 72-db 55 a4 47 30 c4 eb 91 [.8.f.|r.U.G0... 0050 - 8d 7e 56 d8 91 ad af 51-59 53 ef 62 3d 52 5c f4 .~V....QYS.b=R\. 0060 - 4a 96 01 b0 f2 32 08 8b-2d ae b3 9c bf 41 a3 83 J....2..-....A.. 0070 - 96 6b a4 37 f4 f6 4e 9d-43 01 ae 5c 08 01 c3 c0 .k.7..N.C..\.... 0080 - 85 31 ca d5 10 9f 4a 93-96 7a 87 aa 0e aa e7 1c .1....J..z...... 0090 - b4 e2 65 34 21 19 d9 58-9b 01 f8 b7 06 3c a9 fb ..e4!..X.....<.. 00a0 - d6 ae 6f 70 8b 23 de 19-e3 c2 88 53 3e 56 a6 19 ..op.#.....S>V.. 00b0 - 89 1d 62 a4 37 e6 d7 9f-d0 b2 08 e0 4a d1 f2 df ..b.7.......J... Start Time: 1373879544 Timeout : 300 (sec) Verify return code: 18 (self signed certificate) ---
A la suite de l'affichage, saisissez la ligne suivante :
GET / HTTP/1.0 [Entrée] [Entrée]
Vous obtiendrez un résultat similaire à celle-ci :
GET / HTTP/1.0 HTTP/1.1 200 OK Date: Mon, 15 Jul 2013 09:13:16 GMT Server: Apache/2.2.15 (CentOS) Last-Modified: Mon, 15 Jul 2013 09:08:02 GMT ETag: "7576-43-4e1893297286c" Accept-Ranges: bytes Content-Length: 67 Connection: close Content-Type: text/html; charset=UTF-8 <html> <body> <center>Accueil du site SSL</center> </body> </html> closed
Notez qu'il y a génération d'erreurs. Ceci est normal.
Procédez maintenant au test en utilisant votre navigateur en saisissant l'adresse :
https://www.homeland.net
Il est normal que la vérification échoue car dans ce cas il s'agit du certificat de test.
HSTS ou HTTP Strict Transport Security est une caractéristique de sécurité qui permet à un site web d'informer les navigateurs qui le site web n'accepte que des connexions sécuriséés.
Pour mettre en place cette notification, il convient d'éditer le fichier /etc/httpd/conf.d/ssl.conf en faisant appel à mod_header afin que l'en-tête soit modifié :
# # When we also provide SSL we have to listen to the # the HTTPS port in addition. # Listen 443 Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
Dans ce cas, l'expiration de la notification est dans deux ans (63 072 000 secondes). Un navigateur visitant le site aujourd'hui verra donc l'expiration de deux ans. Si le navigateur reviens demain, celui-ci verra encore deux ans mais à partir de la date de demain.
Pour forcer les navigateurs à connecter en https, il convient d'inclure une règle de ré-ecriture dans la section du site principal de la balise VirtualHost qui se trouve dans notre cas dans le fichier /etc/httpd/conf/vhosts.d/Vhosts.conf :
... <VirtualHost *:80> DocumentRoot /var/www/html ServerName www.homeland.net <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </IfModule> </VirtualHost> ...
Modifiez vos fichiers de configuration et re-démarrez le service httpd. Testez ensuite avec un navigateur le lien http://www.homeland.net.
<html> <DIV ALIGN=“CENTER”> Copyright © 2004-2017 I2TCH LIMITED </html>