https

Définition :

  • SSL : Secure Socket Layer

Protocole développé à l’origine par Netscape

  • TLS : Transport Layer Security

Successeur du SSL. Protocole développé par l’IETF (Internet Engineering Task Force)

Ces deux protocoles permettent de sécuriser les échanges transitant entre un client et un serveur.

 

L’objectif est multiple :

  • Réaliser l’authentification du serveur
  • Réaliser si possible l’authentification du client (facultatif)
  • S’assurer de la confidentialité des données échangées
  • Valider l’intégrité des données échangées

Le SSL comme le TLS est une surcouche aux protocoles.(Exemple : HTTP → HTTPS)

 

Versions et sortie des protocoles :

 

Protocole

Année de sortie
  • SSL 1.0
  • ~1994
  • SSL 2.0
  • 1995
  • SSL 3.0
  • 1996
  • TLS 1.0
  • 1999
  • TLS 1.1
  • 2006
  • TLS 1.2
  • 2008
  • TLS 1.3
  • Encore draft…

 

Diagramme séquentiel des échanges:

SSL-TLS

Un peu de détail :

Ci-dessous le détail des différents échanges réalisés :

1 – Client Hello

Le client contacte le serveur

2 – Server Hello

Le serveur envoie les informations nécessaires pour la communication avec le client

  • Version des protocoles SSL
  • Session ID
  • Sélection de Hash
  • Certificats serveurs (clé publique)
  • Facultatif: Requête du certificat client

3 – Réponse au serveur avec envoie des informations

Validation du certificat serveur (CN / Date / Issuer)

Création d’une clé (Pre-master secret)

Chiffrement de ces données à l’aide de la clé publique du serveur

4 – Récupération et génération de la clé finale (Master secret)

Le serveur utilise la clé privée pour déchiffrer les données du reçues

Génération de finale (Master secret) avec les informations reçues du client

5-Génération d’une clé de session

Génération d’une clé de session entre le client et le serveur grâce au Master secret  qui sera la clé symétrique utilisée pour chiffrer et déchiffrer les informations échangées au cours de la session SSL

6- Chiffrement des données avec la clé de session

Les données échangées seront chiffrées avec la clé de session

 

Test d’un point de vue client :

 

Il est possible de réaliser une négociation SSL en utilisant le logiciel OpenSSL (Simulation côté client) :

 

openssl.exe s_client -connect synetis.com:443 -state -ssl3

 

Loading ‘screen’ into random state – done

CONNECTED(000001A0)

SSL_connect:before/connect initialization

SSL_connect:SSLv3 write client hello A

SSL_connect:SSLv3 read server hello A

depth=3 /C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root

verify error:num=19:self signed certificate in certificate chain

verify return:0

SSL_connect:SSLv3 read server certificate A

SSL_connect:SSLv3 read server key exchange A

SSL_connect:SSLv3 read server done A

SSL_connect:SSLv3 write client key exchange A

SSL_connect:SSLv3 write change cipher spec A

SSL_connect:SSLv3 write finished A

SSL_connect:SSLv3 flush data

SSL_connect:SSLv3 read finished A

Certificate chain

0 s:/C=FR/2.5.4.17=75017/ST=PARIS/L=Paris/2.5.4.9=55 rue de Tocqueville/O=SYNETIS SAS/OU=0002 522945153/CN=ticketing.synetis.com

  i:/C=FR/OU=High Assurance/O=OVH SAS/CN=OVH Secure Certification Authority

1 s:/C=FR/OU=High Assurance/O=OVH SAS/CN=OVH Secure Certification Authority

  i:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware

2 s:/C=US/ST=UT/L=Salt Lake City/O=The USERTRUST Network/OU=http://www.usertrust.com/CN=UTN-USERFirst-Hardware

  i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root

3 s:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root

  i:/C=SE/O=AddTrust AB/OU=AddTrust External TTP Network/CN=AddTrust External CA Root

Server certificate

—–BEGIN CERTIFICATE—–

MIIFkjCCBHqgAwIBAgIQVKiaGe+rSuvYJxOIBghRazANBgkqhkiG9w0BAQUFADBl

MQswCQYDVQQGEwJGUjEXMBUGA1UECxMOSGlnaCBBc3N1cmFuY2UxEDAOBgNVBAoT

B09WSCBTQVMxKzApBgNVBAMTIk9WSCBTZWN1cmUgQ2VydGlmaWNhdGlvbiBBdXRo

b3JpdHkwHhcNMTEwNjA2M…

—–END CERTIFICATE—–

subject=/C=FR/2.5.4.17=75017/ST=PARIS/L=Paris/2.5.4.9=55 rue de Tocqueville/O=SYNETIS SAS/OU=0002 522945153/CN=ticketing.synetis.com

issuer=/C=FR/OU=High Assurance/O=OVH SAS/CN=OVH Secure Certification Authority

No client certificate CA names sent

SSL handshake has read 5692 bytes and written 304 bytes

New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA

Server public key is 2048 bit

SSL-Session:

   Protocol  : SSLv3

   Cipher    : EDH-RSA-DES-CBC3-SHA

   Session-ID: 91702C4667FAB9311E775B4D735B5FF123E0D9EFC624B805E31D6FA9B1D8E015

   Session-ID-ctx:

   Master-Key: 1D769A534E35D045D023EAE59EC20E0ACE6D4B40A47F832187037AEA39031C1E483E6D12D2C1B685BEE309577E56C3A7

   Key-Arg   : None

   Start Time: 1447878711

   Timeout   : 7200 (sec)

   Verify return code: 19 (self signed certificate in certificate chain)

Sources :

Sébastien

Manager