ERROR: OpenSSL error 336134278 occurred in SSL_connect/accept
Lorsque vous souhaites accéder à des données externes, par exemple via un filename SAS, vous pouvez être confronté à une erreur SSL, surtout si vous travailler sur un environnement LINUX :
ERROR: OpenSSL error 336134278 (0x14090086) occurred in SSL_connect/accept at line 5388, the error message is "error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed"..
Cet erreur survient lorsque SAS tente d’étable une lien de confiance avec le serveur. Ce lien est possible grâce au certificat. Vous trouverez, sur ce site, de nombreux articles sur le fonctionnement de SSL dans SAS et en dehors. Si vous n’êtes pas familier avec les notions de certificat, je vous encourage a parcourir les articles que j’ai écrit sur le sujet afin d’avoir une vision d’ensemble du fonctionnement du chiffrement sur internet.
Pour ne plus avoir ce problème de confiance entre votre serveur SAS et le site distant, il faut configurer votre environnement SAS en ajoutant les certificat CA manquant.
Pour comprendre, prenons le code suivante :
Ce code a pour vocation de créer, à partir d’un fichier CSV, une table SAS. Le fichier CSV source est stocké sur le site data.gouv.fr. Il s’agit de Plateforme ouverte des données publiques françaises. Et ce site utilise https.
Il faut donc stocker les certificats de confiance sur le serveur SAS, et plus précisément dans le magasin de certificat (truststore). Ce magasin de certificat, au format pem, se trouve dans le répertoire /SASSecurityCertificateFramework/1.1/cacerts/ et plus précisément dans le fichier
trustedcerts.pem
Une fois les certificats CA rapatriés au format
pem et stocké dans un fichier, nous utilisons SAS Deployment Manager pour ajouter ces certificats dans le truststore :
Puis, nous pouvons valider la connexion, en dehors de SAS via la commande suivante :
La commande doit indiquer que la connexion chiffrée est correcte.
Maintenant, après avoir ces étapes, la connexion chiffrée entre SAS et le serveur distant doit fonctionner.
Sources :
1 2 3 4 5 6 7 |
FileName Finess URL "https://www.data.gouv.fr/s/resources/finess-extraction-des-entites-juridiques/20170523-104030/etalab_cs1100501_stock_20170523-0517.csv"; data FINESS_sas; infile Finess dlm=';' ; input num_finess_et num_finess_ej raison_social raison_social_longue complement_raison_social complement_distribution $; run; |
1 2 |
openssl s_client -port 443 -CAfile /SASSecurityCertificateFramework/1.1/cacerts/tru stedcerts.pem -host data.gouv.fr –prexit |