24.12.2014 Views

La PKI de test du CRU

La PKI de test du CRU

La PKI de test du CRU

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>La</strong> <strong>PKI</strong> <strong>de</strong> <strong>test</strong> <strong>du</strong> <strong>CRU</strong><br />

http://pki.cru.fr<br />

Assemblée <strong>de</strong>s rssi Juin 2001<br />

Serge.Aumont@cru.fr<br />

1


• Certificat X509<br />

• <strong>PKI</strong><br />

• Listes <strong>de</strong> révocation<br />

• <strong>La</strong> <strong>PKI</strong> <strong>du</strong> <strong>CRU</strong><br />

• Obtenir un certificat<br />

• Obtenir un certificat serveur<br />

7. Apache<br />

8. L’IGC <strong>de</strong> l’UREC<br />

2


Applications d’une <strong>PKI</strong><br />

• Êtes-vous lassé d’être celui qui interdit <strong>de</strong>s accès aux<br />

utilisateurs <br />

• En distribuant <strong>de</strong>s certificats personnels, on peut ouvrir<br />

plus largement certaines protections basées sur <strong>de</strong>s<br />

restrictions (gar<strong>de</strong> barrière, wrapper etc)<br />

• <strong>La</strong>rge domaine d’applications : ipsec, imaps, pops, https,<br />

ldaps, …, smime<br />

3


Petits rappels 1/5<br />

Cryptage symétrique :<br />

$msg=&crypt($k,&crypt($k,$msg))<br />

Deux PBs <strong>de</strong> taille :<br />

• PB1 : Comment envoyer la clef au<br />

<strong>de</strong>stinataire <br />

• PB2 : Soit n le nombre d’interlocuteurs :<br />

nombre <strong>de</strong> clefs : n(n-1)/2<br />

• Exemple : 3DES<br />

4


Petits rappels 2/5<br />

Cryptage asymétrique :<br />

• On fabrique une paire <strong>de</strong> clefs qui sont<br />

associées<br />

• $msg = &crypt($K1,&crypt($K2,$msg));<br />

• <strong>La</strong> connaissance d’une clef ne permet pas<br />

<strong>de</strong> dé<strong>du</strong>ire l’autre.<br />

• Exemple : RSA<br />

5


Petits rappels 3/5<br />

• On déci<strong>de</strong> arbitrairement qu’une <strong>de</strong>s clefs est<br />

publique, l’autre privée<br />

• Confi<strong>de</strong>ntialité : chiffre avec la clef publique <strong>du</strong><br />

<strong>de</strong>stinataire, seul le possesseur <strong>de</strong> la clef privée<br />

peut déchiffrer<br />

• Signature et intégrité: on crypte une empreinte <strong>du</strong><br />

message avec la clef privée <strong>de</strong> l’émetteur. Tout le<br />

mon<strong>de</strong> peut vérifier que cette empreinte a bien été<br />

ajoutée par l’émetteur en la déchiffrant avec la clef<br />

publique <strong>de</strong> celui-ci.<br />

• Empreinte : MD5, SHA1<br />

6


Petits rappels 4/5<br />

• PB1 et PB2 sont réglés grâce à la notion <strong>de</strong><br />

clef publique/clef privée<br />

• PB3 : RSA 100 à 1000 fois plus coûteux<br />

que 3DES.<br />

• PB3 solution : cryptage asymétrique<br />

uniquement pour s’échanger une clef <strong>de</strong><br />

cryptage symétrique (plus petite et choisie<br />

aléatoirement)<br />

7


Petits rappels 5/5<br />

• PB5 : comment être certain que la clef publique<br />

utilisée est bien celle <strong>de</strong> mon interlocuteur <br />

• L’attaque par diffusion d’une fausse clef n’est pas<br />

une fiction : exemple attaque <strong>de</strong> type « the man in<br />

the middle » dans ssh<br />

• Solution : faire signer la clef publique par une<br />

autorité <strong>de</strong> confiance. On appelle cela un certificat.<br />

8


RAND<br />

Chiffrement<br />

symétrique<br />

Chiffrement<br />

asymétrique<br />

Clé pub(<strong>de</strong>stinataire)<br />

déchiffrement<br />

symétrique<br />

déchiffrement<br />

asymétrique<br />

Clé priv(<strong>de</strong>stinataire)<br />

9


empreinte<br />

Chiffrement<br />

asymétrique<br />

Clé priv(émetteur)<br />

empreinte<br />

déchiffement<br />

asymétrique<br />

Clé pub(émetteur)<br />

10


Qu’est ce donc qu’un certificat X509 1/2<br />

Un fichier contenant :<br />

• L’i<strong>de</strong>ntité <strong>du</strong> titulaire <strong>de</strong> cette clef (Distinguish Name)<br />

Exemple C=FR;O=<strong>CRU</strong>;CN=Aumont;Email=serge.aumont@cru.fr<br />

• Sa clef publique<br />

• Un numéro <strong>de</strong> série<br />

• Une pério<strong>de</strong> <strong>de</strong> validité<br />

• Les applications <strong>du</strong> certificat ex: messagerie, serveur SSL,<br />

ou autorité <strong>de</strong> certification<br />

• Localisation <strong>de</strong> la liste <strong>de</strong> révocation associée<br />

• DN <strong>de</strong> l’autorité émettrice <strong>du</strong> certificat (issuer)<br />

• Signature apposée sur le certificat<br />

11


Qu’est-ce qu’un certificat X509 2/2<br />

• Structure X509 : formalisme <strong>de</strong> représentation <strong>de</strong> la<br />

structure<br />

• Divers codages peuvent être utilisés pour échanger ou<br />

stocker un certificat X509<br />

– DER : un format binaire ;<br />

– PEM : i<strong>de</strong>m DER mais base64 + un marqueur <strong>de</strong> début et un<br />

marqueur <strong>de</strong> fin;<br />

– #PKCS12 : une structure permettant <strong>de</strong> packager un certificat et la<br />

clef privée associée et …<br />

12


MD5 Fingerprint=34:21:86:66:0B:20:64:56:E5:9F:EE:D6:6C:7D:DA:42<br />

PEM Data:<br />

Certificate:<br />

Data:<br />

Version: 3 (0x2)<br />

Serial Number: 0 (0x0)<br />

Signature Algorithm: md5WithRSAEncryption<br />

Issuer: CN=<strong>test</strong> lustu, O=cru, C=fr<br />

Validity Not Before: Mar 21 10:26:22 2000 GMT Not After : Mar 21 10:26:22 2002 GMT<br />

Subject: CN=<strong>test</strong> lustu, O=cru, C=fr<br />

Subject Public Key Info:<br />

Public Key Algorithm: rsaEncryption<br />

RSA Public Key: (2048 bit)<br />

00:af:52:14:0f:32:3b:78:73:cb:d5:38:a1:9f:42:……...<br />

Exponent: 65537 (0x10001)<br />

X509v3 extensions:<br />

X509v3 Basic Constraints: CA:TRUE<br />

X509v3 Subject Key I<strong>de</strong>ntifier:<br />

C1:D6:67:DA:22:98:24:76:11:C0:8D:7E:C8:25:93:85:8B:8A:82:81<br />

X509v3 Authority Key I<strong>de</strong>ntifier:<br />

keyid:C1:D6:67:DA:22:98:24:76:11:C0:8D:7E:C8:25:93:85:8B:8A:82:81<br />

DirName:/CN=<strong>test</strong> lustu/O=cru/C=fr<br />

X509v3 Key Usage:<br />

Certificate Sign, CRL Sign<br />

Signature Algorithm: md5WithRSAEncryption<br />

04:3d:e3:06:f0:77:8e:26:61:1c:1c:4e:7f:f8:7a:38:73:8d:<br />

……<br />

1c:85:ea:91:76:8e:3e:00:9c:05:b6:9f:e0:6e:2f:48:7f:f1:<br />

e9:16:c8:a5<br />

13


Qu’est-ce donc qu’une <strong>PKI</strong> 1/2<br />

• L’ensemble <strong>de</strong>s services permettant <strong>de</strong><br />

– créer <strong>de</strong>s certificats,<br />

– <strong>de</strong> les publier<br />

– d’en prolonger la validité<br />

– <strong>de</strong> les révoquer<br />

– <strong>de</strong> les recouvrer<br />

• Les autorités d’enregistrement (RA) vérifient les données<br />

<strong>de</strong>s <strong>de</strong>man<strong>de</strong>s <strong>de</strong> certificats,<br />

• Les autorités <strong>de</strong> certifications (CA) établissent les<br />

certificats sur la base <strong>de</strong> ce que les RAs ont validé.<br />

14


Qu’est-ce donc qu’une <strong>PKI</strong> 2/2<br />

• <strong>La</strong> liste <strong>de</strong>s CAs <strong>de</strong> confiance défini le niveau <strong>de</strong><br />

sécurité <strong>de</strong> vos applications. <strong>La</strong> <strong>PKI</strong> doit donc<br />

publier sa :<br />

– politique d’enregistrement<br />

– politiques <strong>de</strong> certification<br />

– politique <strong>de</strong> révocation<br />

– politique <strong>de</strong> recouvrement<br />

– politique <strong>de</strong> sécurité<br />

– audit <strong>de</strong>s politiques<br />

Et la politique <strong>de</strong>s audit <br />

15


Les listes <strong>de</strong> révocation (CRL)<br />

• Fonction fondamentale en cas <strong>de</strong> doute sur le<br />

secret <strong>de</strong> la clef privée, changement concernant le<br />

bénéficiaire, …<br />

• Simple liste <strong>de</strong>s numéros <strong>de</strong> série <strong>de</strong>s certificats<br />

révoqués.<br />

• Signée par la CA émettrice<br />

• Avec une pério<strong>de</strong> <strong>de</strong> validité <strong>de</strong> la CRL<br />

• Il faut « recharger » périodiquement les CRLs<br />

• Sauf OCSP<br />

16


Objectif <strong>de</strong> la <strong>PKI</strong> <strong>de</strong> <strong>test</strong> <strong>du</strong> <strong>CRU</strong><br />

• Surtout un objectif didactique (population <strong>de</strong>s<br />

RSSI)<br />

• Elle peut exploiter une mo<strong>de</strong>ste CA<br />

• <strong>La</strong> cellule technique <strong>du</strong> <strong>CRU</strong> ne peut exploiter une<br />

<strong>PKI</strong><br />

• Doit replacer avantageusement les certificats autosignés<br />

pour les serveurs.<br />

• Être appliquée pour quelques applications concrètes<br />

(pki.cru.fr, jres.org, groupe logiciel, )<br />

Retour d’expérience : ca-admin@cru.fr, pki-fr@cru.fr<br />

17


Organisation <strong>de</strong> la <strong>PKI</strong><br />

• Un serveur dédié, sur le réseau privé + un serveur virtuel<br />

https publique.<br />

• Une CA racine, 3 ca filles dédiées à <strong>de</strong>s populations<br />

différentes. (rssi, serveurs, users)<br />

• Possibilité <strong>de</strong> créer <strong>de</strong> nouvelles CA<br />

• OpenSSL + enrobage perl maison<br />

18


Contenu <strong>de</strong>s certificats <strong>de</strong> la <strong>PKI</strong> <strong>CRU</strong><br />

• Le moins d’info possible dans le certificat pour limiter les<br />

erreurs (ex : le nom mais pas le prénom).<br />

• Le « distinguish name » :<br />

C=FR;O=;CN=;Email=<br />

• Canonisation <strong>de</strong>s noms d’établissement (source ARES)<br />

• Canonisation <strong>de</strong>s adresses email : indispensable, sinon pas<br />

<strong>de</strong> signature possible <strong>de</strong>s messages !<br />

• Extension X509v3 : « key Usage » et « CRL Distribution<br />

Point »<br />

19


Processus <strong>de</strong> certification<br />

Pour une véritable pki, on parlerait <strong>de</strong> politique<br />

d’enregistrement et <strong>de</strong> politique <strong>de</strong> certification …<br />

• Source fiable : le fichier <strong>de</strong>s RSSI (géré par la DR). On ne<br />

<strong>de</strong>man<strong>de</strong> aucune information aux intéressés. Le processus<br />

d’enregistrement est simplifié !!!<br />

• Génération systématique <strong>du</strong> certificat pour chaque RSSI<br />

(et <strong>de</strong> sa clef privée)<br />

• Archivage au format PKCS12 pour recouvrement et envoi<br />

par mail. Le format #PKCS12 est prévu pour être utilisé<br />

par les navigateurs<br />

20


Certificats RSSI<br />

CaKey<br />

CaCert<br />

RSSI<br />

DN<br />

CSR<br />

Cert<br />

Cert.p12<br />

mail<br />

Key<br />

rand<br />

PASSWD<br />

recouvrement<br />

21


Certificats serveurs<br />

Hostname<br />

CaRssi<br />

CaKey<br />

CaCert<br />

DN<br />

CSR<br />

Cert<br />

Cert.p12 mail<br />

Key<br />

rand<br />

PASSWD<br />

recouvrement<br />

22


<strong>La</strong> clef privée n’est pas privée !<br />

• Recouvrement <strong>de</strong>s clefs privées :<br />

indispensable<br />

• Deux bi-clef<br />

– Signature : pas <strong>de</strong> recouvrement, génération par<br />

le titulaire <strong>du</strong> certificat<br />

– Chiffrement : avec recouvrement <strong>de</strong> la clef<br />

privée<br />

23


Obtenir un certificat<br />

• Limité aux RSSIs (pour le moment)<br />

• mailto: mon-certificat-<strong>de</strong>-rssi@cru.fr<br />

• Chaîne <strong>de</strong> traitement activée avec le From:<br />

• Présence <strong>de</strong> l’opérateur obligatoire. Pas <strong>de</strong><br />

réponse Attendre …<br />

• Vérifier le DN. Contacter<br />

Anne-Marie.Mignon@recherche.gouv.fr<br />

24


Obtenir un certificat serveur<br />

• Obtenir un certificat <strong>de</strong> RSSI<br />

• https://pki.cru.fr/rssi/s/servercert.cgi<br />

• Attendre que l’opérateur émette le<br />

certificat<br />

• Retrouver dans un mail signé et crypté le<br />

certificat, la clef, la chaine <strong>de</strong> certification<br />

• Installer ces fichiers sur le serveur HTTP<br />

25


Que faire avec HTTPS <br />

• 1 seul certificat (côté serveur) pour crypter<br />

la saisie d’informations sensibles.<br />

• E-commerce genre camif.fr se limite à cela !<br />

• Crypter la saisie <strong>de</strong> mots <strong>de</strong> passe.<br />

• Crypter les données d’un formulaire.<br />

• Crypter <strong>de</strong>s cookies.<br />

26


Que faire avec HTTPS <br />

• 1 certificat serveur + 1 certificat par client<br />

• permet <strong>de</strong> sécuriser fortement<br />

l’authentification <strong>de</strong>s clients,<br />

• Remplace <strong>de</strong>s métho<strong>de</strong>s d’authentification<br />

peu pratique : plus <strong>de</strong> mot <strong>de</strong> passe, plus <strong>de</strong><br />

formulaire préalable, plus <strong>de</strong> cookie …<br />

27


Que faire avec HTTPS <br />

• restreindre les droits d’accès à une partie <strong>de</strong>s<br />

clients, logiques possibles :<br />

– distribuer <strong>de</strong>s certificats aux gens autorisés. Un<br />

utilisateur peut avoir beaucoup <strong>de</strong> certificats. <strong>La</strong> gestion<br />

<strong>de</strong>s droits est faite par la <strong>PKI</strong>.<br />

– lister dans le serveur les DN autorisés. Pas <strong>de</strong> notion <strong>de</strong><br />

privilège dans le certificat. (réplication <strong>de</strong>s privilèges<br />

sur chaque serveur)<br />

– on peut panacher ces métho<strong>de</strong>s : classe <strong>de</strong> certificats<br />

28


HTTPS<br />

• mo<strong>de</strong> chiffrement : un certificat X509 émis<br />

par une autorité doit être installé sur le<br />

serveur.<br />

• Si la chaîne <strong>de</strong> vérification <strong>du</strong> certificat<br />

serveur ne croise pas une <strong>de</strong>s autorités <strong>de</strong><br />

confiance <strong>du</strong> client, la session est chiffrée,<br />

mais le serveur n’est pas authentifié. (Le<br />

client reçoit un tas <strong>de</strong> messages inquiétants).<br />

• Importance <strong>de</strong> la liste <strong>de</strong>s CAs par défaut <strong>de</strong>s<br />

clients<br />

29


# openssl s_client -connect pki.cru.fr:443<br />

CONNECTED(00000003)<br />

<strong>de</strong>pth=2 /Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR<br />

verify error:num=19:self signed certificate in certificate chain<br />

verify return:0<br />

Certificate chain<br />

0 s:/Email=webmaster@cru.fr/CN=pki.cru.fr/O=cru/C=fr i:/Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr<br />

1 s:/Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr i:/Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR<br />

2 s:/Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR i:/Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR<br />

Server certificate<br />

-----BEGIN CERTIFICATE-----<br />

MIIEcTCCA1mgAwIBAgIBAjANBgkqhkiG9w0BAQQFADBQMR4wHAYJKoZIhvcNAQkB<br />

....<br />

-----END CERTIFICATE-----<br />

subject=/Email=webmaster@cru.fr/CN=pki.cru.fr/O=cru/C=fr<br />

issuer=/Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr<br />

dans ce cas la session<br />

---<br />

continue malgré l’erreur<br />

....<br />

session SLL sur le port<br />

https <strong>de</strong> pki.cru.fr<br />

chaîne interrompue avant<br />

succès<br />

chaîne <strong>de</strong> certification,<br />

(contient les certificats)<br />

le certificat serveur (tronqué<br />

sur ce document)<br />

subject=issuer<br />

donc self-signed<br />

30


# openssl s_client -connect pki.cru.fr:443 -CAfile /usr/local/openca/ca-cru/stuff/cacert.pem<br />

le certificat<br />

CONNECTED(00000003)<br />

<strong>de</strong>pth=2 /Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR verify return:1<br />

trusted<br />

<strong>de</strong>pth=1 /Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr verify return:1<br />

<strong>de</strong>pth=0 /Email=webmaster@cru.fr/CN=pki.cru.fr/O=cru/C=fr verify return:1<br />

ce certificat <strong>de</strong> la<br />

Certificate chain<br />

chaîne est<br />

0 s:/Email=webmaster@cru.fr/CN=pki.cru.fr/O=cru/C=fr i:/Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr<br />

justement trusted<br />

1 s:/Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr i:/Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR<br />

2 s:/Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR i:/Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR<br />

Server certificate<br />

-----BEGIN CERTIFICATE-----<br />

ok, le certificat<br />

MIIEcTCCA1mgAwIBAgIBAjANBgkqhkiG9w0BAQQFADBQMR4wHAYJKoZIhvcNAQkB<br />

correspond au hostname<br />

................<br />

-----END CERTIFICATE-----<br />

subject=/Email=webmaster@cru.fr/CN=pki.cru.fr/O=cru/C=fr<br />

issuer=/Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr<br />

mo<strong>de</strong> crypte + auth<br />

serveur seulement<br />

No client certificate CA names sent<br />

SSL handshake has read 3819 bytes and written 320 bytes<br />

New, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA Id session (circule en clair) &<br />

Server public key is 1024 bit<br />

clef <strong>de</strong> cryptage symétrique<br />

SSL-Session:<br />

(secret)<br />

protocol : TLSv1<br />

Cipher : EDH-RSA-DES-CBC3-SHA<br />

Session-ID:<br />

2D07890E0D33DF017DD5F0460F5326E61186810F7D5CA1D5017030F2FDA4118B<br />

Session-ID-ctx:<br />

Master-Key:<br />

CFA689D0643472A29FF206D1BDEB8D26E32BF771B174BCF6E730E8661CF2C2C151546D25C46A3DF02687F41E4 Key-Arg :<br />

None Start Time:<br />

991131072 Timeout : 300<br />

31<br />

(sec)<br />

Persistence en<br />

Verify return co<strong>de</strong>:<br />

0 (ok)<br />

inactivité


HTTPS<br />

• Mo<strong>de</strong> chiffré avec authentification <strong>du</strong><br />

client.<br />

• 2 certificats X509 : client + serveur<br />

• Le client choisit un certificat parmi la liste<br />

<strong>de</strong>s CA auxquelles le serveur fait confiance,<br />

• <strong>La</strong> communication est cryptée, le serveur<br />

récupère les infos extraites <strong>du</strong> certificat<br />

client en particulier son DN<br />

32


# openssl s_client -connect pki.cru.fr:443 -CAfile cacert.pem -cert mycert.pem -key mykey.pem<br />

Enter PEM pass phrase:<br />

CONNECTED(00000003)<br />

<strong>de</strong>pth=2 /Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR verify return:1<br />

<strong>de</strong>pth=1 /Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr verify return:1<br />

<strong>de</strong>pth=0 /Email=webmaster@cru.fr/CN=pki.cru.fr/O=cru/C=fr verify return:1<br />

Certificate chain<br />

0 s:/Email=webmaster@cru.fr/CN=pki.cru.fr/O=cru/C=fr i:/Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr<br />

1 s:/Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr i:/Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR<br />

2 s:/Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR i:/Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR<br />

Server certificate<br />

-----BEGIN CERTIFICATE-----<br />

MIIEcTCCA1mgAwIBAgIBAjANBgkqhkiG9w0BAQQFADBQMR4wHAYJKoZIhvcNAQkB<br />

...............<br />

-----END CERTIFICATE-----<br />

subject=/Email=webmaster@cru.fr/CN=pki.cru.fr/O=cru/C=fr<br />

issuer=/Email=ca-admin@cru.fr/CN=ca-servers/O=cru/C=fr<br />

Acceptable client certificate CA names<br />

/C=US/O=Digital Signature Trust Co./OU=DSTCA E1<br />

/C=US/O=Digital Signature Trust Co./OU=DSTCA E2<br />

/C=US/O=Digital Signature Trust Co./OU=DST-Entrust GTI CA<br />

/C=US/O=GTE Corporation/CN=GTE CyberTrust Root<br />

/Email=ca-admin@cru.fr/CN=ca-cru/O=<strong>CRU</strong>/C=FR<br />

/Email=ca-admin@cru.fr/CN=ca-rssi/O=cru/C=fr<br />

/Email=ca-admin@cru.fr/CN=ca-users/O=cru/C=fr/<br />

---<br />

SSL handshake has read 13326 bytes and written 1603 bytes<br />

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

Server public key is 1024 bit<br />

etc<br />

certificat et clé<br />

<strong>du</strong> client<br />

Le serveur est paramétré pour<br />

<strong>de</strong>man<strong>de</strong>r le certificat client.<br />

Il présente la liste <strong>de</strong>s ca<br />

acceptables<br />

33


HTTPS et serveurs virtuels<br />

• Pas <strong>de</strong> serveurs virtuel HTTPS basé sur<br />

un CNAME !<br />

HOST: B<br />

HTTP<br />

A<br />

HTTPSB<br />

Cert A ou Cert B <br />

SSL<br />

194.220.94.171<br />

TCP/IP<br />

34


Serveurs virtuels HTTPS<br />

HOST: A<br />

HTTP<br />

A<br />

HTTPSB<br />

HOST: B<br />

Cert A<br />

SSL<br />

Cert B<br />

194.220.94.171<br />

TCP/IP<br />

TCP/IP<br />

194.220.94.172<br />

35


Apache<br />

• open_ssl http://www.openssl.org<br />

• mod_ssl http://www.modssl.org<br />

• mod_ssl peut être utilisé en mo<strong>de</strong> DSO<br />

36


Source http://www.modssl.org/docs/apachecon2001<br />

37


Installation<br />

• Sur red hat 7.0 le rpm Apache installe<br />

open_ssl et mod_ssl. Le démarrage<br />

standard ouvre le port 80 et le port 443.<br />

cd ../openssl-0.9.6 ; ./configure; make<br />

cd ../mod-ssl-2.8.2<br />

./configure –with ../apache_1.3.19 –with-ssl ../open-ssl-0.9.6 –prefix /usr/local/apache<br />

cd ../apache_1.3.19 ; make ; make certificate type=<strong>du</strong>mmy ; make install; c’est fini !<br />

/usr/local/apache/bin/httpd –DSSL<br />

netscape https://localhost<br />

38


HTTPD.conf 1/3<br />

• Listen 443<br />

• SSLengine on|off<br />

• SSLCertificateFile SSLCertificatekeyFile<br />

• SSLCACertificate(File|Path)<br />

– bundle par défaut<br />

– make<br />

• SSLCertificateChainFile<br />

• SSLSessionCacheTimeout<br />

39


HTTPD.conf 2/3<br />

• SSLCARevocation(File|Path)<br />

• SSLEngine on|off<br />

• SSLVerifyClient none|optional|require<br />

• SSLVerifyDepth n<br />

40


HTTPD.conf<br />

• SSLRequireSSL : interdit un accès en http simple<br />

• SSLRequire <br />

– Expressions +/- complexes utilisant les variables<br />

d’environnement dont celles extraites <strong>de</strong>s certificats<br />

SSLRequire ( %{SSL_CLIENT_S_DN_O} =~ m/^Université/ \<br />

and %{SSL_CLIENT_I_DN_Email} eq «ca-admin@cru.fr » \<br />

or %{remote_addr} =~ m/^129\.20\.10\.[0-9]/)<br />

• SSLOptions +|- <br />

– StdEnvVars : extraction <strong>de</strong>s infos <strong>du</strong> certificat vers <strong>de</strong>s<br />

variables à usage <strong>de</strong>s CGI<br />

41


HTTPD.conf<br />

– FakebasicAuth : le DN est utilisé comme nom<br />

d’usager dans le fichier d’authentification<br />

basique. (le mot <strong>de</strong> passe est alors<br />

xxj31ZMTZzkVA). Cette option doit associer<br />

avec Require valid-user, AuthUserFile, AuthName<br />

– StrictRequire utile avec « satisfy any » si on<br />

veut SSLRequire ou (SSLRequireSLL et<br />

d’autres conditions). Grâce à cette directive le<br />

« any » ne concerne que les autres conditions<br />

42


Les pièges<br />

• Ne jamais faire le raccourci, SSL = sûr.<br />

• Attention à ne pas créer avec HTTPS <strong>de</strong>s<br />

backdoor HTTP (et vis versa).<br />

• Ne pas confondre i<strong>de</strong>ntification et privilèges<br />

• Ne pas partager la racine. Sinon :<br />

<br />

RewriteEngine On<br />

RewriteCond %{HTTPS} != on<br />

RewriteRule ^(.*)$ https://mon.host/zone/$1 [R,L]<br />

SSLRequireSSL<br />

SSLCypherSuite all:!eNULL<br />

<br />

43


Les clients<br />

• Netscape & IE5 : 40 ou 128 bits <br />

• Eudora : rien ou presque<br />

– Proxy « local Security BOX Mail » MSI<br />

– Plugging « mail secure » Baltilmore<br />

44

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!