Dans un premier article, nous avons présenté les axes de de sécurisation des services Web avec Oracle Service Bus.
Pour cette seconde partie, nous nous attaquerons à la sécurisation de la couche transport en utilisant Oracle Weblogic Server. Afin de sécuriser l’échange entre 2 serveurs nous mettrons en place le « two-way SSL ». Ce mode de communication est appelé ainsi car il nécessite des certificats de part et d’autre pour valider l’identité de l’appelant (un certificat serveur et une clé client).
Les étapes de configurations sont les suivantes :
- Création des certificats Client
- Configuration des certificats sur le client
- Création des certificats Serveur
- Configuration des certificats sur Weblogic
Attaquons le sujet !
Création d’un client Java (ici SOAP UI)
Configuration des certificats
Utilisation de l’outil « keytool » de la JVM installée avec SOAP UI.
Création du répertoire sécurisé :
[adrien@easyadrien soapUI-3.5.1]$ mkdir cert [adrien@easyadrien soapUI-3.5.1]$ chmod -R 700 cert [adrien@easyadrien soapUI-3.5.1]$ cd cert
Création du keystore et de la clé privée :
[adrien@easyadrien cert]$ ../jre/bin/keytool -genkey -alias adrienpc -keyalg RSA -validity 3650 -dname "CN=Adrien Adrien,OU=UDP,O=Easyteam,L=Lille,ST=France,C=FR" -keystore soapui.jks -storetype JKS -storepass soapui -keypass easyteam [adrien@easyadrien cert]$ ../jre/bin/keytool -list -v -keystore soapui.jks Tapez le mot de passe du Keystore : Type Keystore : JKS Fournisseur Keystore : SUN Votre Keystore contient 1 entrée(s) Nom d'alias : adrienpc Date de création : 22 mars 2011 Type dentrée : {0} Longueur de chaîne du certificat : 1 Certificat[1]: Propriétaire : CN=Adrien Adrien, OU=UDP, O=Easyteam, L=Lille, ST=France, C=FR Émetteur : CN=Adrien Adrien, OU=UDP, O=Easyteam, L=Lille, ST=France, C=FR Numéro de série : 4d886eb2 Valide du : Tue Mar 22 10:41:06 CET 2011 au : Fri Mar 19 10:41:06 CET 2021 Empreintes du certificat : MD5 : D4:26:AA:01:0C:8F:A1:6C:B2:B3:FA:C1:6D:06:9D:CD SHA1 : B1:D2:73:49:F5:43:1E:1F:A7:97:6D:D7:E5:47:12:06:78:88:FF:31 Nom de lalgorithme de signature : {7} Version : {8}
Création du certificat d’authentification avec son keystore PKCS12 :
[adrien@easyadrien cert]$ ../jre/bin/keytool -genkey -alias adrienpc -keyalg RSA -validity 3650 -dname "CN=Adrien Adrien,OU=UDP,O=Easyteam,L=Lille,ST=France,C=FR" -keystore soapui.p12 -storetype PKCS12 -storepass soapui [adrien@easyadrien cert]$ ../jre/bin/keytool -list -v -storetype PKCS12 -keystore soapui.p12 Tapez le mot de passe du Keystore : Type Keystore : PKCS12 Fournisseur Keystore : SunJSSE Votre Keystore contient 1 entrée(s) Nom d'alias : adrienpc Date de création : 22 mars 2011 Type dentrée : {0} Longueur de chaîne du certificat : 1 Certificat[1]: Propriétaire : CN=Adrien Adrien, OU=UDP, O=Easyteam, L=Lille, ST=France, C=FR Émetteur : CN=Adrien Adrien, OU=UDP, O=Easyteam, L=Lille, ST=France, C=FR Numéro de série : 4d88709c Valide du : Tue Mar 22 10:49:16 CET 2011 au : Fri Mar 19 10:49:16 CET 2021 Empreintes du certificat : MD5 : 7E:C1:AE:6B:72:51:2B:9D:17:E2:55:93:C1:A5:97:38 SHA1 : A7:17:81:1B:6D:F9:72:68:2F:0D:A9:09:B2:AA:8B:2D:34:F8:30:19 Nom de lalgorithme de signature : {7} Version : {8}
Export du certificat Public :
[adrien@easyadrien cert]$ ../jre/bin/keytool -export -alias adrienpc -keystore soapui.jks -storetype JKS -storepass soapui -keypass easyteam -file adrienpc.cer Certificat enregistré dans le fichier <adrienpc.cer>
Export du certificat d’authentification :
[adrien@easyadrien cert]$ ../jre/bin/keytool -export -alias adrienpc -keystore soapui.p12 -storetype PKCS12 -storepass soapui -file adrienpc.p12.cer Certificat enregistré dans le fichier <adrienpc.p12.cer>
Vérification des fichiers générés :
[adrien@easyadrien cert]$ ll total 16 -rw-r--r-- 1 adrien users 593 22 mars 10:53 adrienpc.cer -rw-r--r-- 1 adrien users 593 22 mars 10:54 adrienpc.p12.cer -rw-r--r-- 1 adrien users 1363 22 mars 10:47 soapui.jks -rw-r--r-- 1 adrien users 1816 22 mars 10:49 soapui.p12
Configuration de SOAP UI
Configuration du keystore p12 pour authentification forte (password ici « soapui ») :
Création des certificats sur le serveur OSB
Utilisation de l’outil « keytool » de la JVM installée avec le serveur Weblogic.
Création du répertoire sécurisé :
[oracle@soa.lille.easyteam.fr ~]$ cd /soa/domains/d_dev_soa/ [oracle@soa.lille.easyteam.fr d_dev_soa]$ mkdir cert [oracle@soa.lille.easyteam.fr d_dev_soa]$ chmod -R 700 cert [oracle@soa.lille.easyteam.fr d_dev_soa]$ cd cert
Création de la clé privée et du keystore du serveur :
[oracle@soa.lille.easyteam.fr cert]$ /app/oracle/product/jrockit-jdk1.6.0_20-R28.1.0-4.0.1/bin/keytool -genkey -alias soa.lille.easyteam.fr -keyalg RSA -dname "CN=soa.lille.easyteam.fr,OU=UDP,O=Easyteam,L=Lille,S=France,C=FR" -keypass easyteam -storepass welcome1-keystore keystore.jks -storetype JKS -validity 3650 [oracle@soa.lille.easyteam.fr cert]$ /app/oracle/product/jrockit-jdk1.6.0_20-R28.1.0-4.0.1/bin/keytool -list -v -keystore keystore.jks Enter keystore password: Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry Alias name: soa.lille.easyteam.fr Creation date: Mar 22, 2011 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate[1]: Owner: CN=soa.lille.easyteam.fr, OU=UDP, O=Easyteam, L=Lille, ST=France, C=FR Issuer: CN=soa.lille.easyteam.fr, OU=UDP, O=Easyteam, L=Lille, ST=France, C=FR Serial number: 4d886d28 Valid from: Tue Mar 22 10:34:32 CET 2011 until: Fri Mar 19 10:34:32 CET 2021 Certificate fingerprints: MD5: D0:A6:66:E0:DC:27:99:78:5A:5B:62:73:9E:1A:C1:B7 SHA1: 43:BF:52:F5:D0:EC:CC:27:B0:44:EF:C4:04:E3:06:F1:2F:89:B4:26 Signature algorithm name: SHA1withRSA Version: 3
Maintenant copier sur le serveur OSB le certificat issue du keystore PKCS12 (ici adrien.p12.cer).
Importation de la clé cliente pour l’authentification forte :
[oracle@soa.lille.easyteam.fr cert]$ /app/oracle/product/jrockit-jdk1.6.0_20-R28.1.0-4.0.1/bin/keytool -import -trustcacerts -alias adrienpc -file adrienpc.p12.cer -keystore keystore.jks -storepass welcome1 -storetype JKS Owner: CN=Adrien Adrien, OU=UDP, O=Easyteam, L=Lille, ST=France, C=FR Issuer: CN=Adrien Adrien, OU=UDP, O=Easyteam, L=Lille, ST=France, C=FR Serial number: 4d88709c Valid from: Tue Mar 22 10:49:16 CET 2011 until: Fri Mar 19 10:49:16 CET 2021 Certificate fingerprints: MD5: 7E:C1:AE:6B:72:51:2B:9D:17:E2:55:93:C1:A5:97:38 SHA1: A7:17:81:1B:6D:F9:72:68:2F:0D:A9:09:B2:AA:8B:2D:34:F8:30:19 Signature algorithm name: SHA1withRSA Version: 3 Trust this certificate? [no]: yes Certificate was added to keystore
Il est possible de séparer les certificats d’identification des certificats de chiffrement.
Copier sur le serveur OSB le certificat public de chiffrement (ici adrienpc.cer).
Importer ce certificat dans le keystore de l’OSB :
[oracle@soa.lille.easyteam.fr cert]$ /app/oracle/product/jrockit-jdk1.6.0_20-R28.1.0-4.0.1/bin/keytool -import -trustcacerts -alias apache -file adrienpc.cer -keystore keystore.jks -storepass welcome1 -storetype JKS Owner: CN=Adrien Adrien, OU=UDP, O=Easyteam, L=Lille, ST=France, C=FR Issuer: CN=Adrien Adrien, O=Easyteam, L=Lille, ST=France, C=FR Serial number: b182100a672cd058 Valid from: Tue Mar 22 12:12:06 CET 2011 until: Fri Mar 19 12:12:06 CET 2021 Certificate fingerprints: MD5: 9C:4B:F1:D3:C1:C9:86:3D:D0:C1:F2:8F:76:72:CE:B2 SHA1: 1E:41:93:EE:9E:4D:E4:0D:68:2B:B4:80:81:7C:44:DC:E7:BD:04:B1 Signature algorithm name: SHA1withRSA Version: 3 Extensions: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: EF 58 EF FF F7 E1 0C 94 15 80 90 13 73 7C 16 0B .X..........s... 0010: A8 B7 D8 49 ...I ] ] #2: ObjectId: 2.5.29.19 Criticality=false BasicConstraints:[ CA:true PathLen:2147483647 ] #3: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: EF 58 EF FF F7 E1 0C 94 15 80 90 13 73 7C 16 0B .X..........s... 0010: A8 B7 D8 49 ...I ] [CN=dmzweb01, OU=UDP, O=Easyteam, L=Lille, ST=France, C=FR] SerialNumber: [ b182100a 672cd058] ] Trust this certificate? [no]: yes Certificate was added to keystore
Configuration des certificats sur le serveur OSB
Après avoir vérifié que le port SSL était bien activé sur le « Managed Server » OSB, éditer sa configuration :
Configurer le keystore créé précédemment :
Location : /soa/domains/d_dev_soa/cert/keystore.jks Type : JKS Passphrase : welcome1
Activer les changements puis redémarrer le managed server OSB.
Activer la sécurisation d’un service sur la console OSB
Editer la configuration « HTTP Transport » du Proxy Service:
Activer la sécurisation d’un service sur l’IDE Eclipse
Activer le HTTPS dans l’onget « HTTP Transport »:
Conclusion
Grâce à cet article, vous avez appris à sécuriser un Proxy Service en utilisant une authentification forte par « two-way SSL ».
Dans la prochaine partie, il sera question d’ajouter un Reverse Proxy basé sur Apache Web Server entre le client et le serveur Weblogic. Ce procédé permettra notamment d’effectuer un rebond dans une DMZ pour plus de sécurité.