Cette dernière partie de la série en quatre volets consacrée aux IDocs SAP conclut la série sur l' Intégration de SAP à l'aide des SAP IDoc Snaps en examinant la communication entre les SAP IDoc Snaps et le système SAP et comment la sécuriser à l'aide de Secure Network Communication (SNC) entre les deux. Nous verrons comment ajouter les bibliothèques SAP requises pour SNC aux nœuds de vos Groundplexes, nous passerons en revue la génération et le partage des certificats nécessaires des deux côtés, et nous vous montrerons quels paramètres JCO définir pour utiliser SNC lors de la connexion au système SAP.
Conditions préalables à une communication réseau sécurisée (SNC)
Pour sécuriser la communication entre votre Groundplex et le système SAP, vous de télécharger les bibliothèques cryptographiques SAP et les ajouter à chaque nœud de votre Groundplex. Le téléchargement nécessite un utilisateur de service SAP (S-User) ayant l'autorisation de télécharger des logiciels depuis SAP sur le pages SAP for ME . Une fois sur la page, cliquez sur Services & Support dans le menu de gauche, cliquez sur la vignette Télécharger le logiciel, puis choisissez INSTALLATIONS & UPGRADES sur l'écran suivant. Choisissez By Alphabetical Index (A-Z) -> C dans la liste qui apparaît. Naviguez vers SAP CRYPTOGRAPHIC SOFTWARE -> SAPCRYPTOLIB puis COMMONCRYPTOLIB 8. Sélectionnez votre système d'exploitation, puis téléchargez le dernier fichier *.SAR contenant les bibliothèques.
De plus, vous aurez besoin de la version SAP de tar appelée « sapcar », que vous trouverez sous Télécharger le logiciel sur le centre logiciel SAP for ME . Il est important de noter que vous devez utiliser le champ de recherche situé dans la page Télécharger le logiciel pour le trouver, et non celui en haut de la page.

Ajoutez et configurez les bibliothèques sur vos nœuds GroundPlex.
Pour que ce blog reste concis, nous allons expliquer le processus sur un nœud Linux, mais il devrait être assez facile de transposer ce processus à des nœuds Windows.
Si votre configuration Groundplex comporte plusieurs nœuds, nous vous recommandons de commencer par télécharger les fichiers sur un seul nœud, d'y effectuer toute la configuration, puis de distribuer tous les fichiers aux autres nœuds.
Une fois que vous avez les fichiers *.SAR et SAPCAR*.EXE sur le nœud, connectez-vous au nœud via SSH et passez à l'utilisateur utilisateur root pour simplifier la configuration. Créez un répertoire pour les fichiers sous /opt/sapsnc et déplacez les deux fichiers dans le dossier nouvellement créé ; naviguez dans le répertoire, puis utilisez l'outil sapcar pour décompresser les fichiers en exécutant les commandes suivantes :
$> mkdir -p /opt/sapsnc
$> mv *.SAR SAPCAR* /opt/sapsnc
$> ./spacar -xvf <SAR-filename>.SAR
Dans les archives, vous trouverez les fichiers libsapcrypto.* et l'outil en ligne de commande sapgenpse. Le fichier libsapcrypto.* est la bibliothèque cryptographique, tandis que les outils sapgenpse gèrent les informations de sécurité telles que les clés publiques et privées, les certificats et les listes de confiance dans les fichiers d'environnement de sécurité personnel (*.pse).
Nous vous suggérons également de renommer SAPCAR*.EXE en sapcar et de le rendre exécutable.
$> mv SAPCAR*.EXE sapcar
$> chmod 754 sapcar
L'étape suivante consiste à faire en sorte que les bibliothèques SAP JCo fournies avec votre Groundplex reconnaissent la bibliothèque cryptographique. Pour ce faire, vous devez créer une variable d'environnement OS qui sera visible par votre installation Groundplex. Il existe plusieurs façons d'y parvenir, mais la plus simple consiste à ajouter la variable d'environnement au fichier /etc/environment sur chaque nœud, puis à redémarrer le processus JCC.
$> echo "SECUDIR=/opt/sapsnc" >> /etc/environment
Une fois le processus redémarré, vous pouvez utiliser l'outil sapgenpse pour générer le fichier *.pse.
$> sapgenpse gen_pse -v -p SGP.pse
Got absolute PSE path "/opt/sapsnc/SGP.pse".
Please enter PSE PIN/Passphrase: ********
Please reenter PSE PIN/Passphrase: ********
get_pse: Distinguished name of PSE owner: CN=SGP, OU=IT, O=SnapLogic, C=US
Supplied distinguished name: "CN=SGP, OU=IT, O=SnapLogic, C=US"
Creating PSE with format v2 (default)
succeeded.
certificate creation... ok
PSE update... ok
PKRoot... ok
Il vous sera demandé un code PIN/une phrase secrète pour le fichier qui sera créé, ainsi que le nom distinctif du propriétaire du PS. Le nom distinctif doit respecter les normes de votre entreprise en matière de noms distinctifs X.509. Une fois que le programme aura généré le fichier pse, vous verrez apparaître un fichier portant le nom que vous avez spécifié.
L'étape suivante consiste à exporter le certificat client à partir du fichier pse que vous venez de générer et à l'importer dans le système SAP. La commande vous demandera le code PIN/la phrase secrète du fichier SGP.pse, puis exportera le certificat client vers le fichier SGP.crt.
$> ./sapgenpse export_own_cert -v -p SGP.pse -o SGP.crt
Opening PSE "/opt/sapsnc/SGP.pse"...
No SSO credentials found for this PSE.
Please enter PSE PIN/Passphrase: ********
PSE (v2) open ok.
Retrieving my certificate... ok.
Writing to file (PEM-framed base64-encoded)... ok.
Téléchargez le fichier SGP.crt nouvellement créé et importez-le dans votre système SAP via SAP Gui. Vous pouvez importer le certificat client via la transaction STRUSTSSO2. Commencez par ouvrir le nœud SNC (SAPCryptolib) dans l'arborescence à gauche. Cliquez sur « Importer le certificat », définissez le format de fichier sur Base64 dans la fenêtre contextuelle si cette option est disponible, puis sélectionnez le fichier.

Une fois le certificat téléchargé, vous verrez apparaître ses détails dans la section Certificat au milieu de l'écran. Passez maintenant en mode édition à l'aide du bouton bouton Mode édition en haut, puis sur le bouton Ajouter à la liste des certificats pour ajouter le certificat à la liste des certificats connus.

Tout comme vous avez ajouté le certificat client Groundplex au système SAP, vous devez maintenant ajouter le certificat client du système SAP à Groundplex. Pour ce faire, vous devez d'abord télécharger le certificat client à partir du système SAP, puis le télécharger vers le nœud Groundplex que vous avez utilisé pour générer le fichier PSE Groundplex et ajouter le certificat client du système SAP au fichier PSE.
Pour exporter le certificat client SAP à partir de la transaction STRUSTSSO2, double-cliquez sur le nom du sujet dans la section Certificat propre ; le certificat client s'affichera alors dans la section Certificat située plus bas. Vous pouvez ensuite utiliser le bouton Exporter le certificat pour exporter le certificat. Dans la fenêtre contextuelle de téléchargement, sélectionnez Base64 comme format de fichier et téléchargez le certificat.

La dernière étape consiste à télécharger le certificat client SAP sur votre nœud Groundplex et à l'ajouter au fichier pse Groundplex.
./sapgenpse maintain_pk -v -a S4H.crt -p SGP.pse
Opening PSE "/opt/sapsnc/SGP.pse"...
No SSO credentials found for this PSE.
Please enter PSE PIN/Passphrase: ********
PSE (v2) open ok.
retrieving PKList
Adding new certificate from file "S4H.crt"
----------------------------------------------------------------------------
Subject : CN=S4H
Issuer : CN=S4H
Serialno : 0A:20:23:06:15:07:17:01
KeyInfo : RSA, 2048-bit
Validity - NotBefore: Thu Jun 15 07:17:01 2023 (230615071701Z)
NotAfter: Fri Jan 1 00:00:01 2038 (380101000001Z)
KeyUsage : none
ExtKeyUsage : none
SubjectAltName : none
----------
PKList updated (1 entries total, 1 newly added)
Après avoir ajouté le certificat client SAP au fichier pse, nous devons créer un fichier appelé cred_v2 afin de permettre aux Snaps SAP d'accéder en toute sécurité au PSE sans fournir le mot de passe. Pour ce faire, utilisez la commande :
./sapgenpse seclogin -p SGP.pse -O root
running seclogin with USER="root"
creatingcredentials for yourself (USER="root")...
Please enter PSE PIN/Passphrase: ********
Added SSO-credentials for PSE "/opt/sapsnc/SGP.pse"
Si votre Groundplex comporte plusieurs nœuds, vous devez maintenant distribuer l'intégralité du répertoire /opt/sapsnc à chaque nœud et définir la variable d'environnement SECUDIR avant de pouvoir continuer à configurer SNC pour vos comptes SAP SnapLogic.
Configuration des comptes SAP JCo dans SnapLogic pour utiliser SNC
Du côté SnapLogic, SNC est configuré dans le compte SAP Jco en tant que propriétés avancées du client JCo. Les paramètres minimaux que vous devez utiliser sont les suivants :
- jco.client.snc_mode, Active/désactive l'utilisation des communications réseau sécurisées (SNC).
- La valeur par défaut est définie sur 0 ; les valeurs possibles sont 0 : non activé, 1 : activé.
- jco.client.snc_partnername, définit le nom distinctif du système SAP précédé de p :
- Le nom SNC du serveur d'application SAP se trouve dans le paramètre de profil snc/identity/as.
- jco.client.snc_myname définit le nom distinctif de GroundPlex précédé de p :
- jco.client.snc_lib, définit le chemin d'accès à la bibliothèque qui fournit le service SNC.
En fonction de vos besoins, vous pouvez définir des paramètres supplémentaires tels que :
- jco.client.snc_qop définit le niveau de sécurité des connexions réseau sécurisées. La valeur par défaut est 3 ; les valeurs possibles sont 1 : authentification uniquement, 2 : protection de l'intégrité, 3 : protection de la confidentialité et 8 : utilisation de la valeur du paramètre snc/data_protection/use du serveur d'application SAP.
- jco.client.snc_sso configurera la connexion pour utiliser le certificat client comme mot de passe pour l'utilisateur spécifié.
- La valeur par défaut est définie sur 1 ; les valeurs possibles sont 0 : protocole d'authentification unique désactivé, 1 : protocole d'authentification unique activé. Si vous ne souhaitez pas utiliser le certificat client mais que vous souhaitez utiliser le mot de passe spécifié, vous devez explicitement définir cette valeur sur 0.
Il est important de savoir que si vous souhaitez utiliser le certificat client comme mot de passe utilisateur, celui-ci ne doit pas être configuré comme certificat système dans le serveur SAP. Dans le paragraphe suivant, nous vous expliquons comment vérifier s'il est configuré.

Examen des différentes options pour SNC dans le système SAP
Pour utiliser SNC, il est important de savoir que le système SAP doit être configuré à cet effet. Dans cet article, nous n'aborderons pas la manière de procéder, car nous partons du principe que votre équipe SAP s'en est déjà chargée. Vous devez leur demander les paramètres de configuration qu'ils ont définis afin de procéder à la configuration correspondante du côté SnapLogic. Pour ce faire, nous abordons brièvement vos options dans SAP pour SNC et Single Sign-On basé sur SCN. Les paramètres de profil qui déterminent la manière dont les clients sont autorisés à se connecter au système SAP sont les suivants :
snc/accept_insecure_rfc = 1
snc/accept_insecure_gui = 1
snc/accept_insecure_cpic = 1
Ici, le paramètre snc/accept_insecure_rfc est important pour nous. Si la valeur est définie sur 0, le système rejettera les RFC externes non protégés, 1 permettra au système d'accepter tous les RFC non protégés, et U permettra au système d'accepter les RFC externes non protégés pour les utilisateurs dont l'enregistrement maître utilisateur comporte l'indicateur approprié.
Si nous examinons la fiche utilisateur dans la transaction SAP SU01, nous avons la possibilité de spécifier le nom distinctif du certificat client pour l'utilisateur à utiliser. Si le paramètre snc/accept_insecure_rfc est défini sur 0, vous devez spécifier le nom distinctif d'un certificat client pour chaque utilisateur qui souhaite se connecter au système SAP. Naturellement, ce certificat client doit être ajouté à la configuration dans la transaction STRUSTSSO2, comme nous l'avons fait précédemment.
Si snc/accept_insecure_rfc est défini sur U, vous pouvez spécifier le nom distinctif, mais également utiliser l'option Autoriser la connexion par mot de passe pour SAP GUI (spécifique à l'utilisateur), comme indiqué dans la capture d'écran, afin d'autoriser la connexion par mot de passe.

Vérifiez également la transaction SAP SNC0 pour vous assurer que le certificat client est n'est pas répertorié comme certificat pour le contrôle d'accès (ACL) pour les systèmes. Si tel est le cas, vous devrez soit supprimer le certificat de cette liste, ou vous ne pourrez pas utiliser ce certificat client comme mot de passe. Vous devez soit changer votre jco.client.snc_myname pour un certificat différent, soit passer à la connexion par mot de passe en définissant jco.client. snc_so sur 0.





