TLS avec SAS : Les erreurs fréquentes

Lorsque vous vous attaquez à la sécurisation de votre environnement SAS, vous rencontrez, peut-être, des problèmes lors de l’intégration TLS.(Transport Layer Security, la norme de sécurisation par chiffrement de l'information, succédant à SSL). Aussi, je vous propose ici les erreurs les plus fréquentes ainsi que quelques pistes pour le corriger. ERROR: Unable to load extension: (tkessl) Une erreur classique; la première que vous pouvez otbenir. Pour faire simple, SAS ne parvient à  charger  tkessl, le module en charge de la communication SSL (Secure Sockets Layer). D'abord, vérifions la présence de la librairie TKESSL ;
cd /install/SASFoundation/9.4/sasexe/
ls -lrt tkessl.so
Ce qui donne : -r-xr-xr-x 1 sastux techsup 286414 Jun 19 2013 tkessl.so puis, localison les libssl :
locate libssl
Ce qui donne :
/install/SASFoundation/9.4/sasexe/libssl.so
install/SASFoundation/9.4/sasexe/libssl.so.0.9.8
install/SASFoundation/9.4/sasexe/libssl.so.1.0.0
/usr/lib64/libssl.so.1.0.0
/usr/lib64/libssl.so.10
/usr/lib64/libssl3.so
Maintenant que nous avons vérifier la présence des pré-requis, nous pouvons faire quelques tests :
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /saswork/GOLDEN/RC/LAX.V94.M3/install/SASFoundation/9.4
ldd –v tkessl.so
linux-vdso.so.1 => (0x00007fff431ff000)
libssl.so.0.9.8 (0x00007f869ed26000)
libcrypto.so.0.9.8 (0x00007f869e999000)
...
Ces premiers éléments devraient vous aider à y voir plus clair et vous aider à corriger votre problème. Si ces quelques commandes ne vous permettent pas de fixer cette erreur, il faut aller plus lins et activer les traces. Les événements liés à la sécurité sont maintenant enregistrées via le mécanisme SAS de logging facilty. Aussi, si l'option LOGCONFIGLOC = système est spécifié lorsque SAS démarre, l'enregistrement est effectué par AS logging facility. Ainsi, pour activer les traces SSL, vous pouvez ajouter le bloc suivant dans logconfig.xml :
   <logger name="App.tk.eam.ssl">
      <level value="Trace"/>
      <appender-ref ref="TimeBasedRollingFile"/>
   </logger>
Vous trouverez la liste des “Logger” SSL utilizable dans la documentation SAS Encryption: SAS Logging Facility Vous pouvez également obtenir ce message d’erreur si vous essayez d’accèder à une URL en HTTPS depuis une PROC http :
proc http 
     url="https://www.nicolas-housset.fr" ;
run;
RROR: Could not find extension: (tkessl)
ERROR: An SSL cipher handle could not be created.
ERROR: TK extension TKEAM could not be loaded. Most likely secure communications are not available on this system.
ERROR: Unable to establish an SSL connection.
Ce message d’erreur se produit également si vous ne disposez pas de SAS/SECURE ou depuis SAS University Edition. Dans ce cas, pas de solution, HTTPS et FTPS ne sont pas supporté par SAS University Edition. ERROR: HTTP proxy handshake failed. Une connexion TLS (ou SSL) commence toujours pas un échange de message appelé hanshake (Poignée de main) ou négociation SSL. Cet étape permet au serveur de s’identifier auprès du client via un échange de clé publique, puis permet au client et au serveur de « coopérer » dans le processus de chiffrement/Déchiffrement. Sans se handshake préalable, pas de données chiffrées entre les deux parties. Ce message peut se produire lors de la vérification du SNI (Server Name Indication). En effet, le client indique le nom d'hôte (hostname) avec lequel il tente de démarrer une négociation TLS. Pour ne plus avoir ce message :
  • Sur les serveurs UNIX, assurez-vous que la variable d'environnement USE SSL SNI est pas définie.
  • Sur les serveurs Windows, SNI est toujours envoyé. Hormis de désactiver la vérification du nom (Subject Alternative Name) sur les certificats de serveur, il n'y a actuellement pas solution de contournement (SAS 9.4 M3 Mai 2016)
ERROR: Cannot load SSL Support Cette erreur survient lorsque SAS ne parvient pas à localiser le ou les certificats SSL.  Par exemple, si  le répertoire de stockage des  certificats n’est pas spécifié via la variable d'environnement SSLCACERTDIR ou que les certificats, bien présent, ne sont pas corrects. ERROR:14090086:SSL routines: SSL3_GET_SERVER_CERTIFICATE: certificate verify failed Encore un classique de la négociation SSL.  Il s’agit d’une variante du message « Cannot load ssl support ». En effet, ce message est affiché lorsque les certificats ne peuvent pas être vérifiés. Par exemple si le contenu des certificats ne sont pas correct (contenu incomple) Failed to Find the Following Issuer of this Certificate in Truststore Cette erreur peut survenir si vous avez utilisé le gestionnaire de déploiement de SAS (SDM) pour ajouter des certificats à la liste de confiance. Mais vous l’avez dans le mauvais ordre. Tout d'abord, vous devez ajouter l'émetteur du certificat ou le certificat racine (root certificat) . Ensuite, vous pouvez ajouter le certificat intermédiaire. Attention, vous devez exécuter la tâche de SDM pour chaque certificat que vous devez ajouter. Verify that the File Contains Certificates in the Proper Encoding Vous obtenez ce message d’erreur lorsque vous utilisez le SDM pour ajouter un certificat avec un mauvais codage. En effet, les certificats doivent être des certificats X.509 encodé en base 64 codage avec une extension .pem, .crt ou .cer. Pem est à la fois une norme d’encodage (Privacy Enhanced Email), mais également est une extension de nom de fichier dont le nom s'inspire de cette norme, pour les certificats X.509. Le format de fichier PEM est le format préféré  pour les logiciels open-source. Et donc, il peut avoir une variété d'extensions (.pem, .key, .cert …) Si vous souhaitez en savoir plus sur les certificats, visitez la documentation SAS Certificate File Formats ERROR: The SSL provider is not in FIPS 140-2 mode. ERROR: An SSL cipher handle could not be created. ERROR: TK extension TKEAM could not be loaded. Most likely secure fips-140-2-dans-sasCes erreurs remontent un problème lié à la FIPS 140-2, une norme de sécurité informatique du gouvernement américain utilisé pour accréditer les modules cryptographiques. FIPS 140-2 est pas une technologie, mais une définition de ce que les mécanismes de sécurité devraient faire. La norme définit les exigences de sécurité qui doivent être remplies par un module cryptographique utilisé dans un système de sécurité protégeant les informations non classifiées dans les systèmes informatiques. Dans SAS, si FIPS est activé,SAS va tenter de charger un sous-ensemble particulier de bibliothèques OpenSSL, contenues dans le cadre du module d'objet OpenSSL FIPS. Ces bibliothèques ne sont pas présents par défaut et devront être téléchargés et compilés conformément aux instructions spécifiques spécifiées par la norme FIPS. Par conséquent, l'activation de FIPS est généralement pas recommandée, sauf si absolument nécessaire par la politique d'un client. Pour vérifier si FIPS est activé :
proc options option = ENCRYPTFIPS;run;
Bien entendu, les bibliothèques OpenSSL standard sont capables de fournir un cryptage AES. Cependant, seules les bibliothèques de modules d'objets FIPS OpenSSL satisfont à la norme FIPS. Si l'option ENCRYPTFIPS est activée et que les bibliothèques ne sont pas présentes, le système SAS génère donc une erreur lorsqu'un serveur SAS doit agir en tant que client TLS et communiquer via le protocole HTTPS.  

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.