Https et SAS Web Server

S’il y a bien un sujet qui revient souvent sur le devant de la scène c’est le déploiement SAS en https ! Utiliser une connexion sécurisée ne sert pas uniquement à crypter/chiffrer des données, mais  garantie :
  1. L’authenticité: Est-ce que les données que je reçois proviennent bien du site web que je consulte ?
  2. L’intégrité;  Est-ce que les données que je reçois sont-elles intègres ? Est-ce que quelqu’un les aurait modifiées durant leur transfert ?
  3. Le cryptage (ouchiffrement) :  Est-ce que quelqu’un d’autre peut lire les données qui ont été transférées ?
Bref, si votre environnement SAS est visible sur Internet vous devez utiliser HTTPS, pour authentifier votre serveur et les échanges. C’est pour cette raison que les Autorités de Certification ont été créées, et qu’un certificat SSL assure l’authenticité et l’intégrité des données échangées.  Ainsi, avec le https, vous garantissez à vos clients bien plus que le chiffrement de vos communications. Dans cet article, nous allons mettre en place la configuration suivante : sas-web-server-https-443 Ainsi, nous allons chiffre les communications entre "internet" et le SAS Web Server (port 443). Les communications "interne" à SAS, entre le SAS Web Server et le SAS Web Application Server reste en "clair"

Avant de commencer

Si vous envisagez d'utiliser HTTPS, il est préférable d'activer cette fonctionnalité pendant l'installation et la configuration avec l'Assistant de déploiement SAS (SAS Deployment Wizard) . En effet, l'assistant de déploiement SAS demande un certificat et une clé privée signés par une autorité de certification. Le but de cet article n'est pas de vous présenter, de façon exhaustive, le déploiement de SAS sur votre environnement, mais de mettre le "focus" sur la configuration de votre serveur web en https. Revenons à nos certificats.. La première étape de notre déploiement consiste à « authentifier » votre serveur par une autorité. Pour notre exemple, nous allons utiliser un certificat auto-signé, c’est-à-dire que nous allons jouer le rôle de l’autorité de certification Je vous invite à vous rendez sur mon article Création d’un certificat auto-signé avec OpenSSL pour créer votre clé et la signer.

Certificat

J’ai donc suivi mon propre tuto pour créer une clé et un  certificat « authentifié » pour mon domaine sasstudio.nicolas-housset.fr. C’est ce certificat et cette clé que nous utiliserons dans ce tuto : https-et-sas-1   https-et-sas-2 https-et-sas-3 Il est important également que votre certificat CA se trouve dans votre keystore de la JVM SAS. ( How SAS Uses Certificates) Pour vérifier : L’occasion de vérifier non ? Dans notre cas vous pouvez rechercher avec la commande suivante :
keytool -list -v -keystore SASHome\SASPrivateJavaRuntimeEnvironment\9.4\jre\lib\security\jssecacerts
ou utiliser un alias :
keytool -list -v -keystore SASHome\SASPrivateJavaRuntimeEnvironment\9.4\jre\lib\security\jssecacerts -alias sastudio.nicolas-housset.fr
Si vous ne trouvez rien, on l’ajoute :
keytool -import -trustcacerts -file C:\SAS\cle_for_sas\certificat.crt -alias sasstudio.nicolas-housset.fr -keystore SASHome\SASPrivateJavaRuntimeEnvironment\9.4\jre\lib\security\jssecacerts
Il est également possible d'utiliser l’outil SAS TLS/SSL Diagnostic Tool pour ajouter votre certificat dans le keystore java SAS

Installation SAS

SAS Web Server est installé avec SAS Deployment Wizard. L'assistant peut également configurer automatiquement le serveur. Par défaut, le serveur est installé sur la même machine que SAS Web Application Server. Cependant, comme la topologie est définie dans un fichier plan que l'assistant utilise, le serveur peut être déployé sur une machine différente si la topologie est définie de cette façon dans le fichier plan.   plan-sas   Lors de l'installation, et plus précisément durant l'étape de configuration de SAS Web Server, vous allez spécifier les options de configuration su serveur Web. Aussi, il vous faudra choisir "Protocole HTTP utilisant  SSL" : sas-Protocole HTTP utilisant  SSL Puis il vous sera demandé d'indiquer l'emplacement de votre certificat et de votre clé privée ( du serveur SAS ) : sas - certificat et de votre clé privée   Après d'autres étapes de configuration, l'installation pourra démarrer : sas-installation-en-https

 Vérification

Après installation, vous pouvez accéder à votre environnement SAS : sas-securise-avec-https-et-ssl

A savoir

La cas de chrome Si vous utilisez un certificat auto-signé, c'est à dire non signé par une autorité certifiante reconnue, vous aurez l'erreur ERR_CERT_AUTHORITY_INVALID lors d'une connexion depuis Chrome : sas-https-et-ERR_CERT_AUTHORITY_INVALID Pour ne plus avoir ce message et contourner cette limitation, il faut autoriser, dans Chrome, les certificats non valides pour les ressources chargées à partir de l'hôte local. Pour cela, il suffit de saisir l'instruction suivante dans votre barre d'adresse chrome :
chrome://flags/#allow-insecure-localhost
sas-et-allow-insecure-localhost Puis :   sas-autoriser-dans-Chrome-les-certificats-non-valides-pour-les-ressources-local Ce qui donne : sas-https-dans-google-chome

Problèmes possibles et autres choses à savoir

Clé avec mot de passe

Un autre point concerne l'utilisation d'un clé avec mot de passe. Il est obligatoire d'utiliser une clé SANS mot de passe.  Si vous utilisez un clé avec mot de passe, votre serveur web SAS ne pourra démarrer et vous aurez l'erreur suivante dans les logs :(Web\WebServer\logs\error...log) :
[Fri Nov 25 20:58:01 2016] [error] Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file C:/SAS/Config/Lev5/Web/WebServer/ssl/sasstudio.nicolas-housset.fr.key)
Erreur lors du ssl handshake Si, durant le déploiement, vous rencontrez l'erreur :
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Vérifier que java accède bien au serveur WEB, en https, c'est à dire que le CA, ayant signé le certificat de votre serveur, est bien dans le keystore  jssecacerts.

 Vérifier laconfiguration SSL du SAS server WEB

Vous pourriez vouloir vérifier la configuration de votre clé et de votre certificat. Rendez-vous dans le fichier Web/WebServer/conf/extra/httpd-ssl.conf et cherchez SSLCertificateKeyFile et SSLCertificateFile. Ces deux propriétés doivent pointer vers vos fichiers clé et certificats. Lors de l'installation les fichiers indiqués à SAS Deployment Wizard sont renommés et copiés dans  Web\WebServer\ssl : cle-et-certificat-pour-sas      

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.