Il peut etre compilé en statique avec apache ou en module loadable dynamiquement (DSO)
Le serveur https écoute par défaut sur le port 443 au lieu de 80 et correspond a un virtual host configuré par des directives spécifiques à mod_ssl
Celles-ci permettent de configurer
La compilation se fera dans le répertoire /tmp/src. Créez-le à votre nom (mkdir /tmp/src) s'il n'existe pas. L'installation se fera dans le répertoire /home/ipa_01/«login»/TP_apache/apache_ssl
./config --prefix=/tmp/openssl-0.9.7b
make
make test
make install
cd /tmp/src tar xfpz apache_1.3.29.tar.gz tar xfpz mod_ssl-2.8.16-1.3.29.tar.gz
cd /tmp/src/apache_1.3.29 ./configure --prefix=~/apache_ssl
cd /tmp/src/mod_ssl-2.8.16-1.3.29 ./configure --with-apache=../apache_1.3.29
cd ../apache_1.3.29 SSL_BASE=/tmp/openssl-0.9.7b ./configure --prefix=~/apache_ssl --enable-module=all --enable-shared=max --enable-module=ssl --enable-shared=ssl make
make certificate TYPE=custom
make install
apachectl start --> lancement normal apachectl startssl --> lancement avec support de https
Dans le cas TYPE='custom', un certificat est généré et signe par le propre CA du serveur.
Les différents objets sont
Celles concernant le CA
fichier conf/ssl.crt/server.crt
-----BEGIN CERTIFICATE----- MIIC+zCCAmSgAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBgzELMAkGA1UEBhMCRlIx DjAMBgNVBAgTBVBBUklTMRMwEQYDVQQHEwpMQSBERUZFTlNFMQ4wDAYDVQQKEwVQ VUxEVjEMMAoGA1UECxMDSVBBMQ8wDQYDVQQDFAZJUEFfQ0ExIDAeBgkqhkiG9w0B CQEWEWlwYV9jYUBkZXZpbmNpLmZyMB4XDTAxMDMwNzE1NTkzMVoXDTAyMDMwNzE1 NTkzMVowgZAxCzAJBgNVBAYTAkZSMQ4wDAYDVQQIEwVQQVJJUzETMBEGA1UEBxMK TEEgREVGRU5TRTEOMAwGA1UEChMFUFVMRFYxDDAKBgNVBAsTA0lQQTEbMBkGA1UE AxMSd3d3LmlwYS5kZXZpbmNpLmZyMSEwHwYJKoZIhvcNAQkBFhJ3d3dAaXBhLmRl dmluY2kuZnIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKTlEUzlfNBp7wJI jmtEHXV5nMw5gm9K526mVCZHRnzJ5ICk+BrYfaN2wO7GEcKWNIpXLMADBwb2ESoB uhdTCJHtRrdhVcNy1qA8Cu5dV9oAGQthhZAntGNUh/EuNC+0fZR60U/K5j3XJ7+/ AbVD2n7DoNJcMj3nNKe4S3PnaQCLAgMBAAGjcDBuMB0GA1UdEQQWMBSBEnd3d0Bp cGEuZGV2aW5jaS5mcjA6BglghkgBhvhCAQ0ELRYrbW9kX3NzbCBnZW5lcmF0ZWQg Y3VzdG9tIHNlcnZlciBjZXJ0aWZpY2F0ZTARBglghkgBhvhCAQEEBAMCBkAwDQYJ KoZIhvcNAQEEBQADgYEAF7CGN30zua3C5E78RNtOzzdlfUCxMviG4Z4mMCsrNojm 0aAZTecZ7Ssoirv80k6yze08siq76T5s5WbxaSRgJ+Jy8P/ZSS01Tja8tq5RBOpE My7hfce3ZmU7CHBDlbprjImWTeGJc/p0wgj9/nrt1n8hjLqBWJPK/QCMigmbJ8Y= -----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=FR, ST=PARIS, L=LA DEFENSE, O=PULDV, OU=IPA, CN=IPA_CA/Email=ipa_ca@devinci.fr
Validity
Not Before: Mar 7 15:59:31 2001 GMT
Not After : Mar 7 15:59:31 2002 GMT
Subject: C=FR, ST=PARIS, L=LA DEFENSE, O=PULDV, OU=IPA, CN=www.ipa.devinci.fr/Email=www@ipa.devinci.fr
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:a4:e5:11:4c:e5:7c:d0:69:ef:02:48:8e:6b:44:
1d:75:79:9c:cc:39:82:6f:4a:e7:6e:a6:54:26:47:
46:7c:c9:e4:80:a4:f8:1a:d8:7d:a3:76:c0:ee:c6:
11:c2:96:34:8a:57:2c:c0:03:07:06:f6:11:2a:01:
ba:17:53:08:91:ed:46:b7:61:55:c3:72:d6:a0:3c:
0a:ee:5d:57:da:00:19:0b:61:85:90:27:b4:63:54:
87:f1:2e:34:2f:b4:7d:94:7a:d1:4f:ca:e6:3d:d7:
27:bf:bf:01:b5:43:da:7e:c3:a0:d2:5c:32:3d:e7:
34:a7:b8:4b:73:e7:69:00:8b
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Alternative Name:
email:www@ipa.devinci.fr
Netscape Comment:
mod_ssl generated custom server certificate
Netscape Cert Type:
SSL Server
Signature Algorithm: md5WithRSAEncryption
17:b0:86:37:7d:33:b9:ad:c2:e4:4e:fc:44:db:4e:cf:37:65:
7d:40:b1:32:f8:86:e1:9e:26:30:2b:2b:36:88:e6:d1:a0:19:
4d:e7:19:ed:2b:28:8a:bb:fc:d2:4e:b2:cd:ed:3c:b2:2a:bb:
e9:3e:6c:e5:66:f1:69:24:60:27:e2:72:f0:ff:d9:49:2d:35:
4e:36:bc:b6:ae:51:04:ea:44:33:2e:e1:7d:c7:b7:66:65:3b:
08:70:43:95:ba:6b:8c:89:96:4d:e1:89:73:fa:74:c2:08:fd:
fe:7a:ed:d6:7f:21:8c:ba:81:58:93:ca:fd:00:8c:8a:09:9b:
27:c6
1. Moteur SSL
SSLEngine [on|off]
activation ou désactivation du moteur du protocole SSL/TLS
2. Cryptage des clefs privées et pass phrase
- un ou plusieurs Virtual Hosts SSL définis dans le fichier de conf de apache
- pour chacun d'entre eux, apache (au lancement) doit lire les certificats
et les clefs privées
les clefs privées sont cryptées et decryptées au lancement par une
pass phrase fournie par l'administrateur
schéma de mémorisation/réutilisation des pass phrase :
pour chaque clef privée, toutes les pass phrases mémorisées sont essayées
pour ne pas avoir a les redemander
SSLPassPhraseDialog
builtin : pass phrase demandée interactivement avant que apache se
détache du terminal
exec:/path/to/program :
program server:port [RSA|DSA] est appelé (vérifications de l'intègrité du
système) et retourne sur la pass phrase sur stdout
3. Génération de nombres aléatoires
Random seed fournit au PRNG (Pseudo Random Number Generator) de openssl
SSLRandomSeed
builtin
(time, process id, IPC scoreborad)
toujours utilisable (time, process id, ...)
inconvenient : faible entropie
file:/path/to/source [size]
à utiliser avec /dev/random (risque de blocage si nb d'octet demandés
non encore disponible) ou /dev/urandom
utilisation de EGD (Entropy Gathering Daemon)
dans ce cas file=egd-socket
egd:/path/to/egd-socket (egd)
exec:/path/to/program
4. Cache de session
utilisation d'un cache global accessible de toutes les instances
pré-forkées de apache-SSL pour réutiliser les clés de session
(et éviter des handshakes inutiles lorsqu'un client demande plusieurs
documents en parallèle)
Mutex utilise pour l'accès en écriture du cache session
SSLMutex
none : dangereux
file:/path/to/mutex : fichier sur le filesystem (local!)
sem : sémaphore SYS V IPC (le système doit le supporter)
Format du cache de session (synchronisation du cache local en RAM de openSSL)
SSLSessionCache
none : pas de cache
dbm:/path/to/datafile : fichier au format dbm (hash)
shm:/path/to/datafile[(size)] : table de hash de size octets dans un segment
de mémoire partage base sur datafile
Timeout (en secondes) pour les infos du cache
SSLSessionCacheTimeout
5. Controle d'accès
- Versions de protocole autorisées
SSLProtocol [+-] protocol ...
SSLv2 : protocole original défini par netscape
SSLv3 : successeur de v2 - standard
TLSv1 : successeur de v3 par IETF
All : équivalent a +SSLv2 +SSLv3 +TLSv1
- Interdiction des accès si HTTPS non utilisé
SSLRequireSSL (contexte directory ou .htaccess)
Conditions d'accès par expression régulière
- SSLRequire expression
6. Suite cryptographique négociable lors du handshake
Suite cryptographique négociable par le client lors du handshake
SSLCypherSuite cipher-spec
cypher-spec : chaine spécifiant un ensemble ordonne d'algorithmes issus
des 4 groupes suivants
- algorithmes d'échange de clés (RSA, Diffie-Helmann)
- algorithmes d'authentification (RSA, Diffie-Hellman, DSS ou none)
- algorithmes de cryptage (DES, Triple-DES, RC4, RC2, IDEA ou none)
- algorithmes MAC (controle par digest - MD5, SHA or SHA1)
algorithmes indiqués par :
- flags, préfixes par la fonction (s'ils peuvent avoir plusieurs fonctions)
k pour key-exchange (ex : kRSA)
a pour authentification (ex: aRSA)
e pour encoding (eNULL)
- ou alias désignant un ensemble ordonné d'algorithmes
HIGH : tous les algos utilisant 3DES
MEDIUM : tous les algos 128 bits
LOW :
RSA
TLSv1
...
7. Certificats
7.1 certificat du serveur
Fichier contenant le certificat du serveur encode suivant la methode PEM
(base 64) et éventuellement la clef privée RSA ou DSA (pas une bonne idée)
SSLCertificateFile filename
Fichier contenant la clef privée encodée PEM
SSLCertificateKeyFile filename
7.2 certificats des CA
- Chaine de certificats des CA envoyés au client
Fichier contenant la chaine des certificats des CA du certificat du serveur
SSLCertificateChainFile filename
certificats non-utilisés pour l'authentification du client, sauf s'ils
sont présents dans SSLCACertificatePath ou SSLCACertificateFile
- Vérification du certificat du client
Répertoire contenant fichiers contenant les certificats encodés PEM
des CA du client
Ces fichiers sont accedés via une table de hash des noms de ces fichiers
SSLCACertificatePath directory
Fichier contenant les certificats concatenés des CA du clients
SSLCACertificateFile filename
7.3 Revocation des certificats
Repertoire contenant les CRL (Certificat Revocation List) encodés PEM des CA
des clients
Les fichiers sont accedés via des tables de hash (les noms sont des valeurs
de hash)
SSLCARevocationPath directory
SSLCARevocationFile
CRL concatenes
8. Authentification du client
SSLVerifyClient level
2 niveaux (parmi 4) ayant un sens dans la pratique :
none
require
Nombre max de certificat de CA du client que le serveur doit regarder
dans la chaine des certificats de CA avant d'en trouver un qu'il connait
(i.e. dans son SSLCACertificatePath ou SSLCACertificateFile), pouvant ainsi
valider le certificat du client
SSLVerifyDepth
9. Logs
Fichier de log
SSLLog filename
dupliqués dans logs apache (ErrorLog)
filename non absolu : relatif à ServerRoot
filename = |prog : pipe dans prog
Niveau de log
SSLLogLevel level
none : seulement messages d'erreur dans logs apache
error : messages d'erreur seulement
warn
info
trace
debug
10. Options d'execution
SSLOptions
Retour à la page de garde |
Cours IN327
|
|
|