SAS Enterprise Miner et TLS/SSL
SAS Enterprise Miner s’appuie sur Java Web Start. Java Web Start permet de télécharger et d'exécuter des applications Java à partir du Web. Avec SAS Enterprise Miner, à partir d'un navigateur Web, en cliquant sur un lien disponible sur la page SASEnterpriseMinerJWS, le navigateur Web lance Java Web Start, qui télécharge, met en cache et exécute l'application :
Dans le cas où les communications entre l’application java SAS Enterprise Miner et votre serveur SAS sont chiffrés via tls/ssl (https), il peut être nécessaire d’ajouter les certificats de l’autorité de certification (CA) du serveur SAS dans la JVM exécutant l’application.
Vous êtes invité à entrer le mot de passe du magasin. Le mot de passe par défaut est changeit.
L'outil vous demande de confirmer l'ajout et indique un message si tout se passe bien :
Notez que chaque certificat dans un Keystore Java est associé avec un alias unique.
Maintenant, nous pouvons vérifier l'import avec la commande suivante :
Vous pouvez valider la bonne prise en compte de votre certificat en comparant les empreintes numériques :
Un peu de théorie
Avant de vous lancer dans la configuration, je vous propose un petit rappel du fonctionnement des certificats et des autorités de certification. Je le répète souvent sur mon blog mais une bonne compréhension des acteurs et du fonctionnement est la clé de la réussite ! Les certificats sont utilisés pour authentifier un processus serveur ou un utilisateur. Une autorité de certification (CA) est une autorité d'un réseau qui émet et gère des informations d'identification de sécurité et des clés publiques pour le chiffrement des messages. Dans le cadre d'une infrastructure à clé publique (PKI), une autorité de certification vérifie auprès d'un organisme d'enregistrement les informations fournies par le demandeur d'un certificat numérique. Si l'autorité d'enregistrement vérifie les informations du demandeur, l'AC peut alors délivrer un certificat. Les certificats numériques sont utilisés dans un système de sécurité de réseau pour garantir que les deux parties échangent des informations sont vraiment qui ils prétendent être. A noter également, selon la configuration du système de sécurité d'un réseau, le certificat peut inclure la clé publique et le nom de son propriétaire, la date d'expiration du certificat ou d'autres informations L'authentification des entités se fait par trois types de certificats :- Signé par un tiers (Third-party-signed) . Vous accédez à une autorité de certification commerciale tierce, telle que VeriSign, Symantec ou Comodoto, et achetez un certificat.
- Site-signed. Vous demandez à la direction informatique de votre site pour obtenir un certificat.
- Auto-signé (self-signed). Vous êtes votre propre autorité de certification.
Comment fonctionne la validation du certificat ?
Prenons l'exemple d'un serveur SAS fonctionnant en https, c'est à dire que le serveur web SAS utilise un certificat signé par une autorité de certification (si vous ne savez pas ce qu'est une autorité de certification, lisez le chapitre au dessus). Lorsque vous accédez, depuis votre navigateur à ce serveur SAS en https, une vérification du certificat serveur est effectuée, c'est à dire que le navigateur regarde qui a "signé" le certificat du serveur (par exemple Geotrust) puis regarde dans son magasin de certificat valide si Geotrust est bien une autorité de confiance. Un magasin (keystore) contient la clef privée et tout certificat nécessaire pour compléter une chaîne de confiance et établir la valeur de confiance du certificat primaire. Si le navigateur trouve Geotrust dans son magasin, cela signifie qu'il peut faire confiance au serveur (puisque c'est Geotrust qui l'a signé et que le navigateur fait confiance à Geotrust) et chiffrer les communications. Par contre, si le navigateur NE trouve PAS, l'autorité de certification ayant signé le certificat serveur, il NE peut PAS faire confiance à ce serveur et l'indique à l'utilisateur via un message d'avertissement. Les navigateurs (ou Java qui nous intéresse dans cet article) utilise un magasin confiance avec la majorité des autorités certification (Liste Mozilla). Aussi, si le serveur que vous tentez d’accéder est signé/identifié par un autorité (Third-party-signed) pas de problème. Il y a de grande chance que l'autorité de confiance soit présente dans le magasin de certificat utilisé par le navigateur. Par contre avec un Site-signed ou un self-signed, aucune chance : vous devez l'ajouter à la main ! Le fonctionnement est le même avec SAS Enterprise Miner puisque cette application utilise Java pour se connecter au serveur SAS. Il faut donc vous assurer que l'autorité de certification ayant signé le certificat du serveur est bien présente dans le magasin de certificat de JAVA. Simple, non ?Message d'erreur
Si Java ne connait pas l'autorité de certification ayant "signé" le serveur SAS, vous vous trouvez dans la situation suivante :Enterprise Miner : Le certificat n’est pas valide et ne permet pas de vérifier l’identité de ce site Web.
Si vous avez lu mes explications, le message prend tous son sens et donne bien la cause du problème. Le certificat utilisé afin d'identifier le site Web n'est pas sécurisé : l'autorité de certification ayant émis ce certificat n'est pas reconnue. Comprendre : Java n'a pas trouvé l'autorité de certification ayant signé (ou identifié pour reprendre le message d'erreur) le serveur SAS. java a parcouru son magasin de certificat (keystore) mais ne l'a pas trouvé.Déterminer l'autorité de certification du serveur SAS
Pour déterminer l'autorité de certification du serveur SAS, il suffit de cliquer sur "Visualiser les détails de certificat" dans la fenêtre d'erreur : Ce qui donne : Nous constatons que le certificat de notre serveur SAS est identifié par l'autorité RapidSSL SHA256. Cette autorité est elle-même certifié par Geotrust. Nous devons nous assurer que l'autorité RapidSSL SHA256 est présente dans le magasin de certificat du JAVA exécutant SAS Enterprise miner. D'un autre côté, ce n'est pas la peine de vérifier puisque une erreur se produit.... De la même façon, si vous utiliser un certificat auto-signé ou signé par votre enterprise, même scénario : il y a aucune chance pour le trouver dans le keystore java. Rendez-vous donc au chapitre suivant, ajouter le certificat de l'autorité dans le keystore java.Ajouter le certificat de l'autorité dans le keystore Java
Avant toute action, vous devez récupérer le certificat à importer :- Si il s'agit d'un certificat auto-signé, vous l'avez puisqu'il s'agit de celui installé sur le serveur SAS (et qui s'auto certifie).
- Si il s'agit d'un certificat diffusé par votre entreprise, vous pouvez le demander à votre équipe informatique ou en le récupérant dans votre magasin de certificat Windows. Il y a en effet de forte chance pour qu'il s'y trouve (puisque lorsque vous accéder à votre serveur SAS depuis un navigateur cela fonctionne).
- Si il s'agit d'un certificat validé par une autorité de certification et que lorsque vous accéder à votre serveur SAS depuis un navigateur, vous ne rencontrez aucun problème cela peut-être du à l'absence du certificat de l'autorité ou d'un sous-certificat de cet autorité, dans le magasin.
1 2 3 4 5 |
"C:\Program Files\Java\jre1.8.0_121\bin\keytool.exe" -keystore "C:\Program Files\Java\jre1.8.0_121\lib\security\<strong>cacerts</strong>" -<strong>importcert</strong> -alias RapidSSL_SHA256_CA -file "C:\TEMP\ssl\RapidSSL_SHA256_CA.crt" |
1 2 3 4 |
"C:\Program Files\Java\jre1.8.0_121\bin\keytool.exe" <strong>-list</strong> -keystore "C:\Program Files\Java\jre1.8.0_121\lib\security\cacerts" |
It Works !
Attention toutefois, avec certaines versions de Java 8, des problèmes peuvent continuer à exister (Failed to validate certificate. The application will not be executed. ) Vous pouvez consulter la note : suivante http://support.sas.com/kb/57/635.htmlPour aller plus loin
- La documentation officielle de SAS sur tout ce qui touche au chiffrement des données Encryption in SAS® 9.4, Sixth Edition et sur l'administration de la partie Middle-tiers de SAS SAS 9.4 Intelligence Platform: Middle-Tier Administration
- Un article en anglais SAS 9.4: Transport Layer Security (HTTPS) and SAS de Stuart Rogers
- Vérifier qu’un certificat CA est bien présent dans le Keystore
- SAS Web Application Server et l’erreur « unable to find valid certification path to requested target »
- Https et SAS Web Server
- InstallCert, l’outil TLS ultime ?