...
- avec des certificats auto-signés (pour des tests)
- avec des certificats délivrés par la PKI pilote du CRU (en intégration avec uPortal)
Pour comprendre les besoins, il faut distinguer les deux types d'usage des certificats liés aux communications https directes entre une appli cliente java et un serveur https, l'appli cliente étant dans notre cas une servlet de même que l'appli serveur.
Côté serveur https
L'application serveur https doit être accessible en ... https.
...
- Le serveur est un serveur apache, frontal du serveur application
- Tomcat traite directement les requêtes https
Apache en frontal
On utilise habituellement mod_ssl. Voir la documentation à ce sujet. D'une manière très succinte :
- SSLCertificateFile précise le nom du fichier qui contient la clé privée
- SSLCertificateChainFile précise le nom d'un fichier en format PEM qui contient le certificat du serveur, et des éventuelles Autorités de Certification.
Tomcat 'standalone'
Il faut préparer un keystore (magasin de certificat) qui doit contenir à la fois la clé privée du serveur https, et le certificat du serveur et éventuellement celui des AC de la chaine de certification.
...
- Soit ajouter le certificat dans le keystore par défaut de la JVM
- Soit préciser au lancement de la JVM (donc dans notre cas, de tomcat) de ne pas utiliser le keystore global de la JVM, mais celui qu'on aura préparé
- Soit l'application java est programmée pour savoir lire un keystore particulier. Ce n'est pas le cas du serveur CAS ni d'uPortal.
Configuration de CAS avec des certificats auto-signés (pour des tests)
On suppose ici que le serveur CAS et uPortal fonctionnement avec la même instance de tomcat. Cette partie explique comment faire fonctionner CAS avec des certificats auto-signés.
...
- génération d'un certif pkcs12 depuis la clé privée du serveur et son certif
- génération du keystore depuis le pkcs12
- ajout de la chaine de certification
Si on n'ajoute pas la chaine de certification, celle-ci n'est pas transmise aux navigateurs clients, ce qui peut poser problème.
Récupération/installation de Jetty
Récupérer Jetty-x.y.z.tgz de http://jetty.mortbay.org (dernière version 4.2.9) et installer :
...
keytool n'aime pas ce format de fichier. 2 solutions, le transformer en format DER avec openssl, ou plus simple, éditer ce fichier pour éliminer tout ce qui n'est pas entre des lignes ----BEGIN CERTIFICATE--- et -----END CERTIFICATE----
On choisit cette seconde méthode, ce qui donne quelque chose du genre :
...
- soit on enregistre l'AC du CRU dans le keystore global de la JVM
- soit on l'enregistre dans un keystore dédié à une instance de JVM.
Les 2 solutions sont présentées.
Intégration de l'autorité de certification du CRU dans la JVM
...
...
%
...
keytool
...
-import
...
-alias
...
CRU-ac-racine
...
-file
...
ac-racine.der
...
-keystore
...
$JAVA_HOME/jre/lib/security/cacerts
...
-storepass
...
changeit
...
Propriétaire
...
:
...
EMAILADDRESS=ca-admin@cru.fr,
...
CN=ac-racine,
...
O=CRU,
...
C=FR
...
Émetteur
...
:
...
EMAILADDRESS=ca-admin@cru.fr,
...
CN=ac-racine,
...
O=CRU,
...
C=FR
...
Numéro
...
de
...
série
...
:
...
0
...
Valide
...
du
...
:
...
Thu
...
Apr
...
17
...
16:16:24
...
CEST
...
2003
...
au
...
:
...
Sun
...
Apr
...
14
...
16:16:24
...
CEST
...
2013
...
Empreintes
...
de
...
certificat
...
:
MD5 : 25:44:35:56:18:E4:EF:65:02:25:99:C6:4E:17:00:38
...
SHA1:
...
33:88:49:67:76:43:8F:58:4D:1F:93:9B:55:CF:C3:A5:37:23:39:B4
...
Faire
...
confiance
...
à
...
ce
...
certificat
...
?
...
...
:
...
oui
...
Certificat
...
ajouté
...
au
...
Keystore
...
Contrôle :
| Bloc de code |
|---|
% keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit Votre keystore contient 17 entrée(s) Type Keystore : jks Fournisseur Keystore : SUN [...] cru-ac-racine, 23 juin 2003, trustedCertEntry, Empreinte du certificat (MD5) : 25:44:35:56:18:E4:EF:65:02:25:99:C6:4E:17:00:38 |
...