Guide pratique : Openssl




                                          Guide pratique : Comment sécuriser 
                                                l’accès au site via  
 

 

 

                                                      
    A travers ce guide, vous allez apprendre à monter un serveur web sécurisé  sous Debian, Nous 
 
    allons  commencer  par  l’installation,  puis  nous  créerons  une  Autorité  de  Certification  (AC) 
    pour que le serveur puisse gérer des certificats. 
 

 

Introduction 

Pour  sécuriser  une connexion  à  un serveur  web  (https),  nous  avons  besoin  d'un  certificat. 
Dans une première approche (adopter dans ce guide) il est possible d'utiliser des certificats 
dits "auto‐signés". Générés très facilement, ils sont très pratique pour développer et tester 
un  site  sécurisé  mais  beaucoup  moins  s'agissant  d'une  utilisation  régulière  et  publique, 
principalement  à  cause  des  avertissements  de  sécurité  qu'ils  génèrent  sur  l'application 
cliente.  L'autre  option  est  alors  d'acheter  un  certificat  auprès  d'un  tiers  de  confiance(CA). 
Certificat  qui  vous  permettra  à  votre  tour  d'en  générer  d'autres  qui  cette  fois  seront 
acceptés sans erreur. 

Quelques bases 

Avant d’entrer dans le vif du sujet, précisons quelques bases, dès que l'on souhaite mettre 
en œuvre une connexion cryptée par SSL pour Apache (HTTPS), il est nécessaire d'avoir un 
certificat. Ce certificat installé sur le serveur contient une paire de clef qui va permettre aux 
deux  parties  de  mettre  en  place  un  échange  chiffré.  Une  des  informations  échangée  à  ce 
stade  est  une  autre  clef  qui  va  servir  quant  à  elle  à  chiffrer,  par  un  algorithme  dit 
"symétrique", le reste de la communication. La raison de ce changement de clef tient à ce 
que le chiffrement asymétrique est plus demandeur en ressources, mais aussi plus sécurisé, 
que sa contrepartie symétrique. Ce protocole permet en quelque sorte d'arriver au meilleur 
des deux mondes. 

Un certificat peut très facilement être généré en utilisant les outils du paquet openssl. Mais 
pour qu'un certificat serveur soit déclaré valide sur le client il doit répondre à trois règles, et 
tout  manquement  à  l'une  de  ces  règles  entraîne  l'affichage  d'un  message  d'avertissement 
sur le navigateur client. 




Yahya.charai@gmail.com | ESR Master 1                                                                        1 
Guide pratique : Openssl




    1. Le  certificat  doit  contenir  le  nom  du  site  qu'il  sécurise  (ex. www.mon_site.fr).  Si  ce 
       n'est pas le cas, le navigateur protestera que le certificat ne provient pas de la bonne 
       adresse. 
    2. Le  certificat  doit  contenir  une  signature  fiable.  Si  ce  n'est  pas  le  cas,  certain 
       navigateurs se contenterons de pleurer un peu, d'autres, comme FireFox, bloquera 
       l'accès avec une signature invalide 
    3. Le certificat doit être signé par un AC (Autorité de Certification) ou par un certificat 
       qui lui‐même est signée par un AC.  

SSL 

Le protocole SSL (Secure Socket Layer) a été créé par Netscape pour sécuriser les transactions entre 
les  serveurs  web  et  les  outils  de  navigation.  Il  a  recours  à   un  tiers,  l'autorité  de  certification 
(CA/CertificateAuthority) qui identifie n'importe laquelle des extrémités ou les deux. 

Openssl 

Pour créer nos certificats, nous utilisons l’outil de cryptographie Openssl  qui sert à : 

         ‐ Créer une Authorité de Certification pour un serveur 
         ‐ Chiffrer des données entre une application serveur et une application cliente (http, 
         vpn, etc.) 
         ‐ Chiffrer et déchiffrer des fichiers sur un disque 
         ‐ Identifier des machines clientes auprès de serveurs 
         ‐ Plus encore... 

Plateforme 

OS :Debian‐6.0.3 

Serveur web :Apache +module sslactivé 

Applications de cryptographie :Openssl‐0.9.8 

Pour  mener  bien  ce  guide  vous  devez  au  préalable  préparer  votre  machine  serveur  en 
installant  Debian,  Apache,Openssl  et  le  module  modssl  d’apache,  vous  voyez  que  c’est 
simple il faut juste cocher lors d’installation de Debian   « Serveur web »comme ça vous allez 
avoir un serveur web qui tourne bien, n’oubliez pas qu’il est possible d’installer ces outils un 
par un et les configurer par la suite ,mais pourquoi réinventer la roue si Debian nos propose 
d’installer un serveur dans les options d’installation avec le module ssl il faut juste l’activé 




Yahya.charai@gmail.com | ESR Master 1                                                                                  2 
Guide pratique : Openssl




. 

Après la fin de l’installation du système, on passe à la vérification des prérequis d’abord le 
serveur web, pour vérifier le serveur web tapez l’url ou @ip  de votre serveur sur le 
navigateur de votre choix et examinez le résultat qui doit  être identique à cela : 




                                                                                                           

Apache  doit  également  être  installé  avec  le  module  de  SSL. Il  reste  que  l’activation  de    ce 
dernier,  plus  tard  on  va  voir  comment,  précisément  dans  l’étape  de  configuration 
d’apapche2.
Vous pouvez vérifier le paquet Openssl avec la requête apt‐cache search <paquet>: 




                                                                                                           
Ou  directement avec la commande openssl: 




Yahya.charai@gmail.com | ESR Master 1                                                                         3 
Guide pratique : Openssl




                                                              
Si elle montre que la commande n'existe pas, alors vous devez le télécharger et l’installer 

Etape1 : Création de l’infrastructure CA 

Créez les dossiers destinés à contenir le certificat: 




                                                                       
/etc/ssl/ : répertoire de configuration général de openssl créé lors de l’installation  

/etc/ssl/ca/ : répertoire qui contient les fichiers de l'AC 
/etc/ssl/ca/newcerts/ : répertoire qui contient les certificats signés par l'AC 

L’étape suivante consiste à créer la base de données pour les certificats prochainement crée 
et signé,en effet la base de données est composées de 2 fichiers : 



 
Le fichier index.txt liste tous les certificats qui ont été signé. 
Le  fichier 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,ce numéro sera 
incrémenté à chaque nouveau certificat 

Etape2 : Génération du certificat racine CA 

Il faut d’abord créer le fichier de configuration du CA (openssl.cnf)pour qu'il ressemble à ça : 
#
# OpenSSL configuration file.
#

# Establish working directory.

dir                            = .

[ ca ]
default_ca                     = CA_default

[ CA_default ]
serial                         =   $dir/serial
database                       =   $dir/index.txt
new_certs_dir                  =   $dir/newcerts
certificate                    =   $dir/cacert.pem
private_key                    =   $dir/private/cakey.pem




Yahya.charai@gmail.com | ESR Master 1                                                                 4 
Guide pratique : Openssl




default_days                   =   365
default_md                     =   md5
preserve                       =   no
email_in_dn                    =   no
nameopt                        =   default_ca
certopt                        =   default_ca
policy                         =   policy_match

[ policy_match ]
countryName                    =   match
stateOrProvinceName            =   match
organizationName               =   match
organizationalUnitName         =   optional
commonName                     =   supplied
emailAddress                   =   optional

[ req ]
default_bits                   =   1024                 #     Size of keys
default_keyfile                =   key.pem              #     name of generated keys
default_md                     =   md5                  #     message digest algorithm
string_mask                    =   nombstr              #     permitted characters
distinguished_name             =   req_distinguished_name
req_extensions                 =   v3_req

[ req_distinguished_name           ]
# Variable name                    Prompt string
#----------------------                    ----------------------------------
0.organizationName     =           Organization Name (company)
organizationalUnitName =           Organizational Unit Name (department, division)
emailAddress           =           Email Address
emailAddress_max       =           40
localityName           =           Locality Name (city, district)
stateOrProvinceName    =           State or Province Name (full name)
countryName            =           Country Name (2 letter code)
countryName_min        =           2
countryName_max        =           2
commonName             =           Common Name (hostname, IP, or your name)
commonName_max         =           64

# Default values for the above, for consistency and less typing.
# Variable name                  Value
#------------------------------          ------------------------------
0.organizationName_default     = EcoleESRmi
localityName_default           = Rabat
stateOrProvinceName_default    = Rabat
countryName_default            = MR

[ v3_ca ]
basicConstraints       = CA:TRUE
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer:always

[ v3_req ]
basicConstraints               = CA:FALSE
subjectKeyIdentifier           = hash
 
Un ls de notre dossier à ce stade donne l’aperçu suivant : 




Yahya.charai@gmail.com | ESR Master 1                                                    5 
Guide pr
       ratique : Open
                    nssl




                                                                          
Maintenant  que  le    fichier  d configur
                                de         ration  est  créé  il  va  maintenant falloir  gén
                                                        c                        t            nérer  le 
        at racine du
certifica          u CA, à noteer que  la plupart des i information  ns qui iront  sur le certificat est 
prise à partir du ce
                   e fichier. 
On génè
      ère le certif
                  ficat CA  ave
                              ec la commande suivan
                                                  nte : 




                                                                                                         
Il en rés
        sulte deux f
                   fichiers: 
Un certtificat de CA
                   A racine ca
                             acert.pem             ertificat raci
                                        m, est le ce            ine publiqu
                                                                          ue qui sera  importé  
dans les browsers  des clients
                             s qui auront
                                        t besoin dee faire des ééchanges sé
                                                                          écurisés ave
                                                                                     ec notre 
serveurr. 
Une  cl privée  (private
      lé                    e/cakey.p   pem)  (L'ex xtension  "p
                                                               pem"  est  Privacy  En
                                                                                    nhanced 
Messagge)cette  clé
                  é  est deman
                             ndée lors de
                                        e  la signatu
                                                    ure d’un nouveau certificat. 

      En  important le  certificat  cacert
                    t                      t.pem sur  les  browwsers,  nous  serions  do plus 
                                                                                       onc 
valables s en tant quue CA pourr le navigate
                                           eur et chaq
                                                     que fois que
                                                                e le client se
                                                                             e connecte à notre 
serveur votre  na
        r,          avigateur  n sera  plu montran la  boîte de  dialog
                               ne          us         nt        e            gue  qui  demande 
d'acceppter la connexion sécur  risée. 
Voilà, vous avez maintenant u
                            une autorité
                                       é de certific
                                                   cation.  




Yahya.ch
       harai@gmail.c
                   com | ESR Ma
                              aster 1                                                                       6 
Guide pratique : Openssl




Des clients peuvent vous soumettre des CSR que vous signerez (s'ils vous payent ! ☺)   

Etape3 : Création d'une demande de signature de certificat (CSR)  
(CertificateSigningRequest) 

À  ce  stade,  nous  avons  un  certificat  racine  valide,  claire,  pour  créer  des  certificats  non 
seulement pour https, mais SPOP, ou SIMAP ou créer d'authentification pour les connexions 
VPN. 
Deux  étapes à effectuer pour créer CSR: 
            •   Créez une clé privée et la demande de certificat. 
            •   Signez la demande et  générer un certificat signé. 
On génère la demande de certificat avec la commande suivante : 

                                                                                       
Une  nouvelle  demande  de  certificat    implique  de  renseigner  certaines  informations 
demandée,  remplissez‐les  en  adaptant  ou  laissez  les  paramètres  par  défaut  du  fichier  de 
configuration sauf le champ "Common Name" qui doit être identique au nom d'hôte/@ip de 
votre serveur  
     •   les deux lettres qui identifient le pays  
     •   le nom de du pays. 
     •   le nom de la ville. 
     •   le nom de l’entreprise ou autre si particulier. 
     •   le nom du site. 
     •   l’adresse mail de l’administrateur. 
 




Yahya.charai@gmail.com | ESR Master 1                                                                       7 
Guide pratique : Openssl




                                                                                              
Les fichiers suivants donc été générés : 
        key.pem >> la clé privée 
        req.pem >> la demande de signature de certificat (CSR) 
Nous pouvons voir le contenu de notre formulaire de demande dans un format plus lisible : 



Etape 4 : La signature du certificat serveur par le CA (Certificate Autority) 
 

La commande qui signe la demande de certificat est la suivante : 




Yahya.charai@gmail.com | ESR Master 1                                                            8 
Guide pratique : Openssl




                                                                                                               
La procédure de signature met à jour la base de données du CA (le fichier index.txt, serial) 
elle crée aussi une copie de certificat dans newcerts/<serial>.pem 
Le  fichier  index.txt  contient  les  références  des  certificats  créés  par  OpenSSL.  Les 
enregistrements sont annotés avec un R pour indiquer que le certificat est révoqué, V qu'il 
est valide et E qu'il a expiré. 


                                                                                                           
Après vous pouvez inspecter votre certificat: 

                                                                             

Etape 5 : Configuration spécifique  d'Apache2 

Dans un premier temps il est nécessaire que le serveur apache écoute sur le port 443. Pour 
cela il suffit d’éditer le ficher /etc/apache2/ports.conf et vérifier que la ligne 
Listen  443 
y soit présente. 
La meilleure manière de l’intégrer est de l’écrire de la sorte : 



                                         
Ensuite  il  faut  configurer  le  site  que  l’on  veut  mettre  en  place  dans  « /etc/apache2/site-
available/»  Par  défaut  un  site  est  configuré  dans  le  fichier  « default-ssl ».  On  peut 
l’adapter en fonction de la configuration souhaitée, mais au moins  il faut que les directives 




Yahya.charai@gmail.com | ESR Master 1                                                                             9 
Guide pratique : Openssl




suivantes y soit présent (commentez avec le caractère dièse "#" toute référence à d’autres 
certificats : 




Après activez le module ssl d’apache2 si n’est pas encore activé ; 



Et redémarrez le serveur apache2 pour activer  la nouvelle configuration ; 




                                                                                                     

Voilà le serveur écoute sur le porte 443, il est nécessaire maintenant d'activer le site :  

 

Et bien sûr que ça nécessite un restart encore une fois de notre  serveur 

En  essayant  maintenant  à  accéder  à  notre  site  qu’on  vient  de  sécuriser  avec  https://  on 
obtient l’alerte suivante qu’indique que  cette certificat est signée avec un CA qui ne figure 
pas  parmi  les  AC  racine  de  confiance,  l’étape  suivante  explique  comment  importer  le  CA 
pour ne pas avoir cet alerte prochainement. 




Yahya.charai@gmail.com | ESR Master 1                                                                    10 
Guide pratique : Openssl




                                                                  

Etape 6 : Installation du certificat d'autorité de certification 

Il faut maintenant installer le certificat de l'autorité de certification dans chaque navigateur 
client. C'est ce dernier qui va valider le certificat reçu par le client lors de la requête https://, 
Pour cela "Arrangez‐vous" pour avoir le certificat (fichier cacert.pem)  disponible à partir du 
client par la suite importer  ce fichier sur le navigateur. 

Une fois le fichier copié, suivre la procédure suivante : 

Pour Internet Explorer : 

            ‐     Allez dans  le menu Outils / Options/Contenu/Certificats/importer 

Pour Firefox : 

            ‐     Outils/Options/Avancé/Afficher les certificats /Autorités/Importer 
                   

 

 

 

 

 




Yahya.charai@gmail.com | ESR Master 1                                                                    11 
Guide pr
       ratique : Open
                    nssl




Déroul
     lement de échange SSL
             es      es


s
                      Un navigatteur demande une page web
                                                      w
                      sécurisée ( général h
                                (en        https://)
 

                 
                      Le serveur web émet sa clef publiqu
                                           a            ue
                      accompagn de son c
                                née       certificat
 
                      Le navigate vérifie qu le certifica a été
                                  eur          ue            at
                      émis par un autorité de certification racine,
                                  ne
                      qu'il est tou
                                  ujours valide et qu'il se ra
                                                             apporte
                      bien au site en cours.
                                  e


 
                      Le navigate emploie l clef publique du
                                eur           la
                      serveur pou chiffrer un clef de chiffrement
                                 ur          ne
                      symétrique aléatoire et l'envoie au serveur
                                                          s
                      web avec l''URL demandée et divers  ses
                      données HT  TTP chiffrée
                                             es.

                      Le serveur web déchiffr la clef de chiffrement
                                             re          c
                      symétrique grâce à sa clef privée et utilise la
                                                        e
                                  frement symétrique pour récupérer
                      clef de chiff                     r
                      l'URL et les données HT
                                 s           TTP.

                      Le serveur renvoie le do
                                             ocument htm et les
                                                       ml
                      données HTTTP chiffrée avec la cle
                                            es         ef
                      symétrique

                     Le navigate déchiffre l'ensemble avec la clef
                               eur                       a
                     symétrique et affiche les information
                                             s           ns.




Yahya.ch
       harai@gmail.c
                   com | ESR Ma
                              aster 1                                   12 

Contenu connexe

PDF
FireSIGHT Management Center (FMC) slides
PPTX
Présentation sécurité open_ssl
PPTX
PDF
Putting Firepower into the Next Generation Firewall
PDF
Cisco sddc solution 소개
PDF
MITRE ATT&CKマッピングのペストプラクティスでたよ
PDF
Ceph with CloudStack
PDF
Cisco Catalyst 9000 Switching Family
FireSIGHT Management Center (FMC) slides
Présentation sécurité open_ssl
Putting Firepower into the Next Generation Firewall
Cisco sddc solution 소개
MITRE ATT&CKマッピングのペストプラクティスでたよ
Ceph with CloudStack
Cisco Catalyst 9000 Switching Family

Tendances (20)

PDF
An introduction to SSH
PDF
VM Autoscaling With CloudStack VR As Network Provider
PPTX
パケット キャプチャで学ぶ SMB (CIFS) の基本
PDF
Build an High-Performance and High-Durable Block Storage Service Based on Ceph
PPT
Introducción al direccionamiento IPng
PDF
AWS Outposts/LocalZones/Wavelength勉強会
PDF
[Black Belt Online Seminar] AWS上でのログ管理
PDF
Comparison between Cisco ACI and VMWARE NSX
PPTX
Deep dive in Docker Overlay Networks
PDF
다양한 솔루션으로 만들어가는 AWS 네트워크 보안::이경수::AWS Summit Seoul 2018
PDF
SRv6 study
PDF
NFV Tutorial
PDF
stackconf 2020 | Speeding up Linux disk encryption by Ignat Korchagin
PDF
Logstashを愛して5年、370ページを超えるガチ本を書いてしまった男の話.
PDF
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
PDF
AWS上で使えるストレージ十番勝負
PDF
Active Directory 侵害と推奨対策
PPTX
CRX: Container Runtime Executive 
PDF
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
PPTX
Ansible Network Automation session1
An introduction to SSH
VM Autoscaling With CloudStack VR As Network Provider
パケット キャプチャで学ぶ SMB (CIFS) の基本
Build an High-Performance and High-Durable Block Storage Service Based on Ceph
Introducción al direccionamiento IPng
AWS Outposts/LocalZones/Wavelength勉強会
[Black Belt Online Seminar] AWS上でのログ管理
Comparison between Cisco ACI and VMWARE NSX
Deep dive in Docker Overlay Networks
다양한 솔루션으로 만들어가는 AWS 네트워크 보안::이경수::AWS Summit Seoul 2018
SRv6 study
NFV Tutorial
stackconf 2020 | Speeding up Linux disk encryption by Ignat Korchagin
Logstashを愛して5年、370ページを超えるガチ本を書いてしまった男の話.
Neil Saunders (Beamly) - Securing your AWS Infrastructure with Hashicorp Vault
AWS上で使えるストレージ十番勝負
Active Directory 侵害と推奨対策
CRX: Container Runtime Executive 
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
Ansible Network Automation session1
Publicité

En vedette (20)

DOCX
Rapport tp openssl
PDF
Projects kazansummit 2014
PPTX
Industrias del neumático
PDF
Seguridad en internet
PDF
Coexisting of Android & Robots
PDF
Factura
PDF
Dirección de proyectos comerciales - 1 Punto de partida
PPTX
Procedure Text
PPT
Infografías e historias del barrio de Villa del Parque
PDF
Juknis bos 2013.pdf final
PPTX
Administracion del tiempo y realizacion personal
PPT
MANTENER EL CEREBRO SIEMPRE JOVEN
PPTX
Cine Forum Wes Anderson Villarrubia de los Ojos
PDF
Photovoltaik – Produktionstechnik und Technologie im Wandel der Zeit
PPTX
Waste management presentation
PDF
MonetizacióN 2.0 3dic09 (Marta Dominguez)
PPS
Investment proposal for sustainable energy project
PPTX
Trastorno antisocial de la personalidad
PPTX
Procesos para llegar a la calidad total
PPT
Los Flip Flops
Rapport tp openssl
Projects kazansummit 2014
Industrias del neumático
Seguridad en internet
Coexisting of Android & Robots
Factura
Dirección de proyectos comerciales - 1 Punto de partida
Procedure Text
Infografías e historias del barrio de Villa del Parque
Juknis bos 2013.pdf final
Administracion del tiempo y realizacion personal
MANTENER EL CEREBRO SIEMPRE JOVEN
Cine Forum Wes Anderson Villarrubia de los Ojos
Photovoltaik – Produktionstechnik und Technologie im Wandel der Zeit
Waste management presentation
MonetizacióN 2.0 3dic09 (Marta Dominguez)
Investment proposal for sustainable energy project
Trastorno antisocial de la personalidad
Procesos para llegar a la calidad total
Los Flip Flops
Publicité

Similaire à Guide pratique openssl sous debian (16)

PDF
Génération de certificats SSL
PDF
Ssl et certification electronique - (construction de certification)
PDF
Implémentation d'openvpn
PDF
Rapport sécurité
PDF
Apache Web Server Index
PDF
Sécurisation d'accès à un CRM pour appareils Nomade
PDF
Opgad formation-opengroupware-pour-les-administrateurs
PPT
Projet Pki Etapes Clefs
PDF
12-CA-Server.en.fr.pdf-Installation et Intégrations CISCO ISE SOUS EVE
PDF
Certifs x509
PDF
Installation et configuration de openfire
PDF
Reseau entreprise
PDF
Configuration des services web sous centOS 5
DOCX
Apache Open SSL
PDF
Apache ssl
 
PDF
Configurer ldaps sur un dc (avec une
Génération de certificats SSL
Ssl et certification electronique - (construction de certification)
Implémentation d'openvpn
Rapport sécurité
Apache Web Server Index
Sécurisation d'accès à un CRM pour appareils Nomade
Opgad formation-opengroupware-pour-les-administrateurs
Projet Pki Etapes Clefs
12-CA-Server.en.fr.pdf-Installation et Intégrations CISCO ISE SOUS EVE
Certifs x509
Installation et configuration de openfire
Reseau entreprise
Configuration des services web sous centOS 5
Apache Open SSL
Apache ssl
 
Configurer ldaps sur un dc (avec une

Dernier (7)

PPTX
Cours Electrotechnique L2 - Séance 6.pptx
PDF
COURS GCDs Chap 9.pdf tous les éléments.
PPTX
test pour la présentation foire de Chalôns V1
PDF
Frais et décompte dans SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Architecture logicielle et Modeles de Conception
PDF
Analyse technique approfondie pour la gestion des transports dans SAP S/4HANA...
PDF
IPTV Meilleur - Le Meilleur Abonnement IPTV en France pour 2025
Cours Electrotechnique L2 - Séance 6.pptx
COURS GCDs Chap 9.pdf tous les éléments.
test pour la présentation foire de Chalôns V1
Frais et décompte dans SAP S/4HANA Transportation Management, S4TM3 Col26
Architecture logicielle et Modeles de Conception
Analyse technique approfondie pour la gestion des transports dans SAP S/4HANA...
IPTV Meilleur - Le Meilleur Abonnement IPTV en France pour 2025

Guide pratique openssl sous debian

  • 1. Guide pratique : Openssl Guide pratique : Comment sécuriser  l’accès au site via             A travers ce guide, vous allez apprendre à monter un serveur web sécurisé  sous Debian, Nous    allons  commencer  par  l’installation,  puis  nous  créerons  une  Autorité  de  Certification  (AC)  pour que le serveur puisse gérer des certificats.      Introduction  Pour  sécuriser  une connexion  à  un serveur  web  (https),  nous  avons  besoin  d'un  certificat.  Dans une première approche (adopter dans ce guide) il est possible d'utiliser des certificats  dits "auto‐signés". Générés très facilement, ils sont très pratique pour développer et tester  un  site  sécurisé  mais  beaucoup  moins  s'agissant  d'une  utilisation  régulière  et  publique,  principalement  à  cause  des  avertissements  de  sécurité  qu'ils  génèrent  sur  l'application  cliente.  L'autre  option  est  alors  d'acheter  un  certificat  auprès  d'un  tiers  de  confiance(CA).  Certificat  qui  vous  permettra  à  votre  tour  d'en  générer  d'autres  qui  cette  fois  seront  acceptés sans erreur.  Quelques bases  Avant d’entrer dans le vif du sujet, précisons quelques bases, dès que l'on souhaite mettre  en œuvre une connexion cryptée par SSL pour Apache (HTTPS), il est nécessaire d'avoir un  certificat. Ce certificat installé sur le serveur contient une paire de clef qui va permettre aux  deux  parties  de  mettre  en  place  un  échange  chiffré.  Une  des  informations  échangée  à  ce  stade  est  une  autre  clef  qui  va  servir  quant  à  elle  à  chiffrer,  par  un  algorithme  dit  "symétrique", le reste de la communication. La raison de ce changement de clef tient à ce  que le chiffrement asymétrique est plus demandeur en ressources, mais aussi plus sécurisé,  que sa contrepartie symétrique. Ce protocole permet en quelque sorte d'arriver au meilleur  des deux mondes.  Un certificat peut très facilement être généré en utilisant les outils du paquet openssl. Mais  pour qu'un certificat serveur soit déclaré valide sur le client il doit répondre à trois règles, et  tout  manquement  à  l'une  de  ces  règles  entraîne  l'affichage  d'un  message  d'avertissement  sur le navigateur client.  Yahya.charai@gmail.com | ESR Master 1  1 
  • 2. Guide pratique : Openssl 1. Le  certificat  doit  contenir  le  nom  du  site  qu'il  sécurise  (ex. www.mon_site.fr).  Si  ce  n'est pas le cas, le navigateur protestera que le certificat ne provient pas de la bonne  adresse.  2. Le  certificat  doit  contenir  une  signature  fiable.  Si  ce  n'est  pas  le  cas,  certain  navigateurs se contenterons de pleurer un peu, d'autres, comme FireFox, bloquera  l'accès avec une signature invalide  3. Le certificat doit être signé par un AC (Autorité de Certification) ou par un certificat  qui lui‐même est signée par un AC.   SSL  Le protocole SSL (Secure Socket Layer) a été créé par Netscape pour sécuriser les transactions entre  les  serveurs  web  et  les  outils  de  navigation.  Il  a  recours  à   un  tiers,  l'autorité  de  certification  (CA/CertificateAuthority) qui identifie n'importe laquelle des extrémités ou les deux.  Openssl  Pour créer nos certificats, nous utilisons l’outil de cryptographie Openssl  qui sert à :  ‐ Créer une Authorité de Certification pour un serveur  ‐ Chiffrer des données entre une application serveur et une application cliente (http,  vpn, etc.)  ‐ Chiffrer et déchiffrer des fichiers sur un disque  ‐ Identifier des machines clientes auprès de serveurs  ‐ Plus encore...  Plateforme  OS :Debian‐6.0.3  Serveur web :Apache +module sslactivé  Applications de cryptographie :Openssl‐0.9.8  Pour  mener  bien  ce  guide  vous  devez  au  préalable  préparer  votre  machine  serveur  en  installant  Debian,  Apache,Openssl  et  le  module  modssl  d’apache,  vous  voyez  que  c’est  simple il faut juste cocher lors d’installation de Debian   « Serveur web »comme ça vous allez  avoir un serveur web qui tourne bien, n’oubliez pas qu’il est possible d’installer ces outils un  par un et les configurer par la suite ,mais pourquoi réinventer la roue si Debian nos propose  d’installer un serveur dans les options d’installation avec le module ssl il faut juste l’activé  Yahya.charai@gmail.com | ESR Master 1  2 
  • 3. Guide pratique : Openssl .  Après la fin de l’installation du système, on passe à la vérification des prérequis d’abord le  serveur web, pour vérifier le serveur web tapez l’url ou @ip  de votre serveur sur le  navigateur de votre choix et examinez le résultat qui doit  être identique à cela :    Apache  doit  également  être  installé  avec  le  module  de  SSL. Il  reste  que  l’activation  de    ce  dernier,  plus  tard  on  va  voir  comment,  précisément  dans  l’étape  de  configuration  d’apapche2. Vous pouvez vérifier le paquet Openssl avec la requête apt‐cache search <paquet>:    Ou  directement avec la commande openssl:  Yahya.charai@gmail.com | ESR Master 1  3 
  • 4. Guide pratique : Openssl   Si elle montre que la commande n'existe pas, alors vous devez le télécharger et l’installer  Etape1 : Création de l’infrastructure CA  Créez les dossiers destinés à contenir le certificat:    /etc/ssl/ : répertoire de configuration général de openssl créé lors de l’installation   /etc/ssl/ca/ : répertoire qui contient les fichiers de l'AC  /etc/ssl/ca/newcerts/ : répertoire qui contient les certificats signés par l'AC  L’étape suivante consiste à créer la base de données pour les certificats prochainement crée  et signé,en effet la base de données est composées de 2 fichiers :    Le fichier index.txt liste tous les certificats qui ont été signé.  Le  fichier 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,ce numéro sera  incrémenté à chaque nouveau certificat  Etape2 : Génération du certificat racine CA  Il faut d’abord créer le fichier de configuration du CA (openssl.cnf)pour qu'il ressemble à ça :  # # OpenSSL configuration file. # # Establish working directory. dir = . [ ca ] default_ca = CA_default [ CA_default ] serial = $dir/serial database = $dir/index.txt new_certs_dir = $dir/newcerts certificate = $dir/cacert.pem private_key = $dir/private/cakey.pem Yahya.charai@gmail.com | ESR Master 1  4 
  • 5. Guide pratique : Openssl default_days = 365 default_md = md5 preserve = no email_in_dn = no nameopt = default_ca certopt = default_ca policy = policy_match [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 1024 # Size of keys default_keyfile = key.pem # name of generated keys default_md = md5 # message digest algorithm string_mask = nombstr # permitted characters distinguished_name = req_distinguished_name req_extensions = v3_req [ req_distinguished_name ] # Variable name Prompt string #---------------------- ---------------------------------- 0.organizationName = Organization Name (company) organizationalUnitName = Organizational Unit Name (department, division) emailAddress = Email Address emailAddress_max = 40 localityName = Locality Name (city, district) stateOrProvinceName = State or Province Name (full name) countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 commonName = Common Name (hostname, IP, or your name) commonName_max = 64 # Default values for the above, for consistency and less typing. # Variable name Value #------------------------------ ------------------------------ 0.organizationName_default = EcoleESRmi localityName_default = Rabat stateOrProvinceName_default = Rabat countryName_default = MR [ v3_ca ] basicConstraints = CA:TRUE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always [ v3_req ] basicConstraints = CA:FALSE subjectKeyIdentifier = hash   Un ls de notre dossier à ce stade donne l’aperçu suivant :  Yahya.charai@gmail.com | ESR Master 1  5 
  • 6. Guide pr ratique : Open nssl   Maintenant  que  le    fichier  d configur de  ration  est  créé  il  va  maintenant falloir  gén c t  nérer  le  at racine du certifica u CA, à noteer que  la plupart des i information ns qui iront  sur le certificat est  prise à partir du ce e fichier.  On génè ère le certif ficat CA  ave ec la commande suivan nte :    Il en rés sulte deux f fichiers:  Un certtificat de CA A racine ca acert.pem ertificat raci m, est le ce ine publiqu ue qui sera  importé   dans les browsers  des clients s qui auront t besoin dee faire des ééchanges sé écurisés ave ec notre  serveurr.  Une  cl privée  (private lé  e/cakey.p pem)  (L'ex xtension  "p pem"  est  Privacy  En nhanced  Messagge)cette  clé é  est deman ndée lors de e  la signatu ure d’un nouveau certificat.    En  important le  certificat  cacert t  t.pem sur  les  browwsers,  nous  serions  do plus  onc  valables s en tant quue CA pourr le navigate eur et chaq que fois que e le client se e connecte à notre  serveur votre  na r,  avigateur  n sera  plu montran la  boîte de  dialog ne  us  nt  e  gue  qui  demande  d'acceppter la connexion sécur risée.  Voilà, vous avez maintenant u une autorité é de certific cation.   Yahya.ch harai@gmail.c com | ESR Ma aster 1  6 
  • 7. Guide pratique : Openssl Des clients peuvent vous soumettre des CSR que vous signerez (s'ils vous payent ! ☺)    Etape3 : Création d'une demande de signature de certificat (CSR)   (CertificateSigningRequest)  À  ce  stade,  nous  avons  un  certificat  racine  valide,  claire,  pour  créer  des  certificats  non  seulement pour https, mais SPOP, ou SIMAP ou créer d'authentification pour les connexions  VPN.  Deux  étapes à effectuer pour créer CSR:  • Créez une clé privée et la demande de certificat.  • Signez la demande et  générer un certificat signé.  On génère la demande de certificat avec la commande suivante :    Une  nouvelle  demande  de  certificat    implique  de  renseigner  certaines  informations  demandée,  remplissez‐les  en  adaptant  ou  laissez  les  paramètres  par  défaut  du  fichier  de  configuration sauf le champ "Common Name" qui doit être identique au nom d'hôte/@ip de  votre serveur   • les deux lettres qui identifient le pays   • le nom de du pays.  • le nom de la ville.  • le nom de l’entreprise ou autre si particulier.  • le nom du site.  • l’adresse mail de l’administrateur.    Yahya.charai@gmail.com | ESR Master 1  7 
  • 8. Guide pratique : Openssl   Les fichiers suivants donc été générés :  key.pem >> la clé privée  req.pem >> la demande de signature de certificat (CSR)  Nous pouvons voir le contenu de notre formulaire de demande dans un format plus lisible :  Etape 4 : La signature du certificat serveur par le CA (Certificate Autority)    La commande qui signe la demande de certificat est la suivante :  Yahya.charai@gmail.com | ESR Master 1  8 
  • 9. Guide pratique : Openssl   La procédure de signature met à jour la base de données du CA (le fichier index.txt, serial)  elle crée aussi une copie de certificat dans newcerts/<serial>.pem  Le  fichier  index.txt  contient  les  références  des  certificats  créés  par  OpenSSL.  Les  enregistrements sont annotés avec un R pour indiquer que le certificat est révoqué, V qu'il  est valide et E qu'il a expiré.    Après vous pouvez inspecter votre certificat:    Etape 5 : Configuration spécifique  d'Apache2  Dans un premier temps il est nécessaire que le serveur apache écoute sur le port 443. Pour  cela il suffit d’éditer le ficher /etc/apache2/ports.conf et vérifier que la ligne  Listen  443  y soit présente.  La meilleure manière de l’intégrer est de l’écrire de la sorte :    Ensuite  il  faut  configurer  le  site  que  l’on  veut  mettre  en  place  dans  « /etc/apache2/site- available/»  Par  défaut  un  site  est  configuré  dans  le  fichier  « default-ssl ».  On  peut  l’adapter en fonction de la configuration souhaitée, mais au moins  il faut que les directives  Yahya.charai@gmail.com | ESR Master 1  9 
  • 10. Guide pratique : Openssl suivantes y soit présent (commentez avec le caractère dièse "#" toute référence à d’autres  certificats :  Après activez le module ssl d’apache2 si n’est pas encore activé ;  Et redémarrez le serveur apache2 pour activer  la nouvelle configuration ;    Voilà le serveur écoute sur le porte 443, il est nécessaire maintenant d'activer le site :     Et bien sûr que ça nécessite un restart encore une fois de notre  serveur  En  essayant  maintenant  à  accéder  à  notre  site  qu’on  vient  de  sécuriser  avec  https://  on  obtient l’alerte suivante qu’indique que  cette certificat est signée avec un CA qui ne figure  pas  parmi  les  AC  racine  de  confiance,  l’étape  suivante  explique  comment  importer  le  CA  pour ne pas avoir cet alerte prochainement.  Yahya.charai@gmail.com | ESR Master 1  10 
  • 11. Guide pratique : Openssl   Etape 6 : Installation du certificat d'autorité de certification  Il faut maintenant installer le certificat de l'autorité de certification dans chaque navigateur  client. C'est ce dernier qui va valider le certificat reçu par le client lors de la requête https://,  Pour cela "Arrangez‐vous" pour avoir le certificat (fichier cacert.pem)  disponible à partir du  client par la suite importer  ce fichier sur le navigateur.  Une fois le fichier copié, suivre la procédure suivante :  Pour Internet Explorer :  ‐ Allez dans  le menu Outils / Options/Contenu/Certificats/importer  Pour Firefox :  ‐ Outils/Options/Avancé/Afficher les certificats /Autorités/Importer              Yahya.charai@gmail.com | ESR Master 1  11 
  • 12. Guide pr ratique : Open nssl Déroul lement de échange SSL es es s Un navigatteur demande une page web w sécurisée ( général h (en https://)       Le serveur web émet sa clef publiqu a ue accompagn de son c née certificat   Le navigate vérifie qu le certifica a été eur ue at   émis par un autorité de certification racine, ne qu'il est tou ujours valide et qu'il se ra apporte bien au site en cours. e   Le navigate emploie l clef publique du eur la serveur pou chiffrer un clef de chiffrement ur ne symétrique aléatoire et l'envoie au serveur s web avec l''URL demandée et divers ses données HT TTP chiffrée es. Le serveur web déchiffr la clef de chiffrement re c symétrique grâce à sa clef privée et utilise la e frement symétrique pour récupérer clef de chiff r l'URL et les données HT s TTP. Le serveur renvoie le do ocument htm et les ml données HTTTP chiffrée avec la cle es ef symétrique Le navigate déchiffre l'ensemble avec la clef eur a symétrique et affiche les information s ns. Yahya.ch harai@gmail.c com | ESR Ma aster 1  12