La TR3 de la V7R5, nous apporte une nouvelle fonction table qui va nous permettre d’analyser plus finement et surtout plus simplement la fin d’un travail, soit en réalité le message CPF1164, en effet on a accès directement au code secondaire .
Exemple :
SELECT FROM_JOB, JOB_END_CODE, JOB_END_DETAIL, SECONDARY_ENDING_CODE, SECONDARY_ENDING_CODE_DETAIL FROM TABLE ( SYSTOOLS.ENDED_JOB_INFO() ) WHERE JOB_END_CODE > 10
Remarque :
Par défaut il analyse la veille soit (current date – 1)
Administration, SQL_DB2Comprendre comment un travail interactif est affecté à un sous système.
C’est des entrées écran qui peuvent être indiquées sur des sous systèmes, par les commandes ADDWSE et CHGWSE.
Il va utiliser le nom de l’unité écran, il va faire la recherche dans cet ordre :
-Par nom -par nom générique -*all
Vous avez un service SQL qui permet de les visualiser QSYS2.WORKSTATION_INFO
Voici une requête qui permet de voir et comprendre les entrées de votre système
SELECT A.SUBSYSTEM_DESCRIPTION_LIBRARY, A.SUBSYSTEM_DESCRIPTION, WORKSTATION_NAME
FROM QSYS2.WORKSTATION_INFO as A Join QSYS2.SUBSYSTEM_INFO AS B
on A.SUBSYSTEM_DESCRIPTION_LIBRARY= b.SUBSYSTEM_DESCRIPTION_LIBRARY and
A.SUBSYSTEM_DESCRIPTION = b.SUBSYSTEM_DESCRIPTION
and B.STATUS = 'ACTIVE' and ALLOCATION = '*SIGNON'
where WORKSTATION_NAME not like('%*%')
union
SELECT A.SUBSYSTEM_DESCRIPTION_LIBRARY, A.SUBSYSTEM_DESCRIPTION, WORKSTATION_NAME
FROM QSYS2.WORKSTATION_INFO as A Join QSYS2.SUBSYSTEM_INFO AS B
on A.SUBSYSTEM_DESCRIPTION_LIBRARY= b.SUBSYSTEM_DESCRIPTION_LIBRARY and
A.SUBSYSTEM_DESCRIPTION = b.SUBSYSTEM_DESCRIPTION
and B.STATUS = 'ACTIVE' and ALLOCATION = '*SIGNON'
where WORKSTATION_NAME like('%*%')
union
SELECT A.SUBSYSTEM_DESCRIPTION_LIBRARY, A.SUBSYSTEM_DESCRIPTION, WORKSTATION_TYPE
FROM QSYS2.WORKSTATION_INFO as A Join QSYS2.SUBSYSTEM_INFO AS B
on A.SUBSYSTEM_DESCRIPTION_LIBRARY= b.SUBSYSTEM_DESCRIPTION_LIBRARY and
A.SUBSYSTEM_DESCRIPTION = b.SUBSYSTEM_DESCRIPTION
and B.STATUS = 'ACTIVE' and ALLOCATION = '*SIGNON'
where WORKSTATION_TYPE = '*ALL'
En principe ca représentera l’ordre de recherche dans votre #ibmi
Remarque :
Quand 2 entrées sont démarrés avec le même critère c’est le premier qui est pris en compte Ici les entrées QPADEV* entrerons dans QINTER On peut également faire des entrées par type les 2 principaux sont IBM-3477-FC 132 IBM-3179-2 80 https://www.rfc-editor.org/rfc/rfc1205 Mais à éviter pas simple à gérer
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-11-03 11:43:412023-11-03 11:43:44Comprendre comment un travail interactif est affecté à un sous système.
C’est la possibilité d’avoir plusieurs messages d’erreur et de pouvoir paginer dessus
Vous pouvez programmer un sous fichier message, mais ca peut être un peu compliqué à réaliser.
Voici une solution simple, il suffit de mettre le mot clé ERRSFL au niveau fichier écran
Ci dessous un exemple avec son programme en CLLE
DSPF
A* Exemple sous fichier d'erreurs
A DSPSIZ(24 80 *DS3)
A ERRSFL
A CA03(03)
A R FMT01
A ZONE1 10A B 11 20
A 41 ERRMSG('Erreur ZONE 1' 41)
A ZONE2 10A B 12 20
A 42 ERRMSG('Erreur ZONE 2' 42)
A ZONE3 10A B 13 20
A 43 ERRMSG('Erreur ZONE 3' 43)
A 6 8'Sous fichier d''erreur'
A DSPATR(HI)
A 11 8'Zone 1 :'
A 12 8'Zone 2 :'
A 13 8'Zone 3 :'
CLLE
/* Exemple sous fichier message d'erreur */
PGM
DCLF ERREUR
dountil &in03
SNDRCVF RCDFMT(FMT01)
IF COND(*NOT &IN03) THEN(DO)
/* activation des indicateurs d'erreur */
CHGVAR &IN41 '1'
CHGVAR &IN42 '1'
CHGVAR &IN43 '1'
enddo
enddo
ENDPGM
Remarque:
La seule limitation, c’est une seule erreur par zone, mais ca suffit dans 90 % des cas
Bien entendu cela favorise la capacité à proposer des offres Cloud !
De ce point de vue c’est une opportunité importante dans la modernisation des infrastructures, et surtout la perspective d’avoir à terme un parc (plus) à jour.
D’autres raisons peuvent être sous-jacentes : la capacité à planifier et prédire un chiffre d’affaire par exemple. Du côté du client cela impacté également les budgets IT (amortissement vs consommation). Laissons cela de côté pour l’instant.
Comment
En synthèse, IBM travaille sur la proposition d’un abonnement IBM i + SWMA (maintenance logicielle). Le parti-pris est une équivalence de budget à 4 ans.
Ainsi, si vous conservez vos machines 4 ans ou moins : pas de budget supplémentaire. Si vous conservez vos systèmes plus longtemps, le coût augmente. De même, il deviendra difficile de conserver des systèmes hors maintenance (mais quel intérêt ?).
D’un autre côté, IBM rend gratuit un grand nombre de produits sous licence : pour les clients les utilisant c’est également une source d’économie. Pour les autres, c’est l’opportunité de disposer de fonctions supplémentaires.
Logiciels sous licence désormais inclus avec la licence IBM i
Administration Runtime Expert, also called Application Runtime Expert (5733-ARE)
CICS Transaction Server (5770-DFH)
HTTP Server (5770-DG1)
Facsimile Support for i (5798-FAX)
Developer Kit for Java (5770-JV1)
Managed System Services (5770-MG1)
Network Authentication Enablement (5770-NAE)
System Manager (5770-SM1)
TCP/IP Connectivity Utilities (5770-TC1)
Transform Services (5770-TS1)
Universal Manageability Enablement (5770-UME)
Logiciels sous licence gratuit (à commander à part)
Web Enablement: includes selected versions of WebSphere Application Server (5733-WE3, 5722-WE2)
Cryptographic Device Manager (5733-CY3)
OmniFind Text Search Server for DB2 for I (5733-OMF)
Logiciels sous licence payants
BRMS (5770-BR1)
Rational Development Studio (5770-WDS)
PowerHA SystemMirror for i (5770-HAS)
Cloud Storage Solutions (5733-ICC)
Db2 Mirror (5770-DBM)
Rational Developer for i
ARCAD Observer for IBM i (5733-AO1)
ARCAD RPG Converter for IBM i (5733-AC1)
IBM i Modernization Engine for Lifecycle Integration (“Merlin” via Passport Advantage)
IBM i Optional Features: Db2 Data Mirroring – Opt 48
Malheureusement, ce sont les utilisateurs de DB2 Web Query qui en pâtissent, IBM ne proposant pas de produit aux fonctionnalités équivalentes.
Ce sera également un manque aux possibilités de l’IBM i : DB2 Web Query est la solution de BI, d’exploitation des données métier. Or les plus fortes valeurs ajoutées de l’IBM i sont aujourd’hui sa base de donnée DB2 et la capacité à traiter des workload business.
Même si le nombre d’utilisateurs de DB2 Web Query était limitée, c’est assurément une mauvaise nouvelle.
Vous faites le l’administration, le plus souvent en 5250 sous l’écran de commandes IBMI ==> call QCMD
Vous voulez effacer la log que vous voyez par la commande DSPJOBLOG.
La première solution consiste à vous déconnecter, du coup la log est effacée ou transformée en spool.
Cette méthode efface tout le contexte mis en place, liste de bibliothèques , variables d’environnement, objets dans QTEMP que vous avez peut être mis beaucoup de temps à construire dans vos tests.
L’idée c’est d’avoir une solution moins radicale qui permette de n’effacer que la log de votre travail, c’est pourquoi vous devriez avoir dans vos tools un outil comme celui la
Une commande qu’on a appelé astucieusement CLRLOG que vous pouvez trouver ici
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-09-17 16:31:212023-09-17 16:42:33Effacer la log de votre travail
Vous avez encore des développements en 5250 avec des DSPF et vous vous posez la question : dois je utiliser une touche CA ou CF ?
Nous allons essayer de vous apporter quelques éclaircissements sur les usages et les bonnes pratiques
Première chose, vous pouvez utiliser une touche de fonction de 2 manières
CA03(03) ou CA03 uniquement
Avec CA03(03), vous testerez *IN03 dans vos programmes RPGLE et &IN03 en CLLE. Avec CA03, vous testerez *INKC dans vos programmes RPGLE et c’est plus compliqué à gérer en CLLE.
Jusque la on utilisait les indicateurs *inka … pour économiser les indicateurs de 01 à 24 (99 disponibles), sur les nouveaux développement on utilise moins d’indicateurs et plus de fonctions intégrées comme %EOF(). Il est donc conseillé d’utiliser les indicateurs *IN01 à *IN24 ; de plus vous pouvez les renommer pour rendre plus lisible dans les programmes !
Pour ce faire, vous devez déclarer votre écran en INDARA pour indiquer que les indicateurs sont séparés du flux des données.
A* Niveau fichier dans le dds : A INDARA
Dans le source du programme RPG : dcl-f MONECR WORKSTN indds(DS_Ind) ; Dans les déclaration :
Dcl-DS DS_Ind len(99); // Touches de fonctions Sortie ind pos(3); Liste ind pos(4); Reaffichage ind pos(5); Creer ind pos(6); Valider ind pos(10); Annuler ind pos(12); … End-DS;
Conseil
Comme vous devez vous baser sur la NORME AUA , vous pouvez faire un include avec ces touches de fonction.
dans le code vous pouvez indiquer :
IF SORTIE ;
Comment déclarer les touches dans vos DDS ? Vous pouvez les déclarer
au niveau du fichier, votre touche sera utilisable dans tous les formats. C’est le cas par exemple de CA03 pour sortir.
au niveau du format, on ne peut pas redéclarer une touche déjà décrite au niveau fichier
Exemple :
A* niveau fichier A CA03(03) A R PREMIER A A R DEUXIEME A* niveau du format A CA12(12)
vous pourrez utiliser : CA03 sur le format PREMIER CA03 et CA12 sur le DEUXIEME
Plus vous serez précis dans vos déclarations, plus vos programmes serons clairs et précis. Toutes les touches déclarées dans les formats doivent être traitées dans le code. Si vous utilisez une touche dans un programme et qu’elle n’est pas traitée … ça peut poser problème, du genre mise à jour sans lecture de l’écran.
Pourquoi CA et pas CF !?
Pour vous expliquer nous avons choisi de faire ce petit exemple (écran + programme RGPLE)
A*%%TS SD 20230914 164942 PLB REL-V7R4M0 5770-WDS
A*%%EC
A DSPSIZ(24 80 *DS3)
A R FMT01
A*%%TS SD 20230914 164942 PLB REL-V7R4M0 5770-WDS
A CA07(07)
A CF08(08)
A 4 10'Test pour comprendre la différence-
A entre une touche CA et CF'
A DSPATR(HI)
A 9 10'Saisir une valeur ici '
A 9 33':'
A ZONE 1A B 9 35VALUES('1' '2')
A 9 38'Veuillez saisir 1 ou 2'
A DSPATR(HI)
A 20 10'CA07==> Sortir sans lecture'
A 21 10'CF08==> Sortir avec lecture'
Où il est possible d’utiliser les touches de fonction 07 déclarée CA et 08 déclarée CF.
f
Premier test
Vous tapez directement F7 ou F8, le comportement est le même si votre buffer n’a pas été modifié, il n’y a pas de lecture. Pour déterminer si le buffer est modifié le système se sert d’un octet attribut (dans le format ou dans la zone) dans le quel on un MDT qui sera à *ON. Si le buffer ou la zone à été modifiée. vous devrez forcer ce tag dans le cas ou contrôlez des données.
C’est le mot clé DSPATR(MDT) dans les DDS qui permet ça, vous pouvez le conditionner par un indicateur.
Deuxième test
Vous saisissez 9 dans l’écran. F7 sort directement et tient pas compte de la saisie, c’est ce qui convient pour les touches F3 ou F12. F8 déclenche une lecture avant de sortir et comme on a fait le choix de contrôler la valeur saisie à 1 ou 2, on est bloqué jusqu’à ce qu’on ait renseigné la zone à la bonne valeur, C’est ce qui convient pour les touches F6 ou F10. On imagine bien que si vous avez 10 zones avec contrôles, ça poser problèmes quel que soit le contrôle
Rappel sur l’ordre à faire sur vos contrôles
1) Contrôle de valeurs, gérer par VALUES() ou CHECK() dans le DDS, aucun code à traiter côté programme.
2) Contrôles de dépendance exemple borne début < borne de fin (toutes les informations de l’écran sont suffisantes pour le contrôle).
3) Contrôles nécessitants une ressource externe, le plus souvent en base de données (saisie d’un numéro de client à contrôler).
La règle si la valeur saisie n’est pas bonne ce n’est pas la peine de faire le contrôle suivant !
Conseil : Soyez précis dans vos déclarations dans le niveau format ou tous les format au fichier. et n’utilisez les touches CF que quand vous devrez traiter les données de l’écran.
C’est une solution à base d’UIM qui permet de gérer des sous fichiers sans écran DDS, en utilisant un panel de groupe et des API pour le manipuler.
Toutes les commandes WRKXXX de votre IBMi sont codées avec cette solution.
Nous allons vous présenter un exemple pour les PF par exemple vous trouverez le code sur github ici https://github.com/Plberthoin/PLB/tree/master/WRKPF
Cet article est inspiré à l’origine d’un article de mcpressonline, j’ai remis le RPG à jour
Vous devrez avoir un PNLGRP avec la structure suivante, pour indiquer les listes
Vous aurez un programme ici en RPG qui va utiliser les API suivantes :
Api Utilisation
QUIOPNDA Ouverture du panel création du Handle QUIPUTV Renseignement variable QUIADDLE Ecriture d’un poste dans la liste QUIDSPP Affichage du panel QUIDLTL Suppression du contenu de la liste QUICLOA Fermeture du panel
Rappel, vous pouvez chercher les APIs disponibles sur votre IBMi avec API-FINDER disponible
C’est une solution standard qui ne nécessite pas de DSPF, mais qui nécessite de connaitre un peu le langage UIM. Avec un squelette de PNL et de programme on peut créer des outils WRKXXX rapidement, idéal pour les outils d’administration par exemple
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-08-08 07:55:242023-08-11 15:55:44Exemple de panel liste
Administration, Non classé, Open source, SecuritéSe connecter à un serveur SSH exécuté sous Windows à partir d’un IBM i (Comment obtenir la log pour débuguer les problèmes éventuels)
Se connecter à un serveur SSH exécuté sous Windows à partir d’un IBM i (Comment obtenir la log pour débuguer les problèmes éventuels)
Mise en place d’OpenSSH Server sur Windows
Pour mettre en place OpenSSH Server sur Windows, la méthode « standard » consiste à passer par les Paramètres > Applications et fonctionnalités > fonctionnalités facultatives :
Il est recommandé de redémarrer Windows une fois la fonctionnalité ajoutée.
Il suffit ensuite de démarrer le serveur via le gestionnaire de Services Windows :
Il est également souhaitable de configurer le démarrage automatique du serveur :
Remarque
Il est également possible d’installer OpenSSH sur Windows via d’autres sources (GitHub par exemple) ce qui permet, entre autres, de choisir plus facilement sa version d’OpenSSH, voir section Détail.
Création d’un jeu de clefs SSH via ssh-keygen
Pour plus de détails sur la création de clefs, vous pouvez vous référer à l’article de Guillaume Gestion des clefs SSH.
Dans cet article je vais tout réaliser sur l’IBM i via QSH :
$ ssh-keygen -t ecdsa -f ~/.ssh/ssh_key
Mise en place de la clef privée et configuration côté IBM i (client)
On a généré la clef privée dans le répertoire .ssh de l’utilisateur, donc elle est déjà bien en place. Il suffit donc de créer un fichier config dans le répertoire .ssh de l’utilisateur afin de simplifier nos commandes pour la suite. Voici un exemple de fichier config :
[~/.ssh/config]
Host windows
Hostname sshd_server.lan
User jl
IdentityFile ~/.ssh/key
StrictHostKeyChecking accept-new
Host
Nom de la configuration, utilisé à la place des différentes informations à la connexion
Hostname
Adresse ou nom du serveur à atteindre
User
Nom de l’utilisateur
IdentityFile
Chemin vers la clef privée
StrictHostKeyChecking accept-new
Permet d’ajouter automatiquement la signature du serveur distant au known_hosts
Mise en place de la clef privée et configuration côté Windows (serveur)
Il faut transférer la clef ssh_key.pub vers Windows et l’ajouter soit au fichier %UserProfile%.ssh\authorized_keys pour un utilisateur lambda, soit au fichier C:\ProgramData\ssh\administrators_authorized_keys pour un utilisateur ayant des droits d’administrateur local.
Attention à ce niveau, les droits des fichiers sont un peu particulières, il faut comme toujours avec le SSH réduire au maximum les utilisateurs ayant accès au fichier et, particularité de Windows, ajouter le droit de lecture au profil de service local Système :
Activation du fichier de log – Configuration sshd_config
Afin de pouvoir analyser d’éventuels problèmes ou simplement vouloir observer un peu plus en détail les différentes étapes de la mise en relation d’un flux ssh il est possible d’activer la log du serveur.
Par défaut celle-ci est redirigée vers les journaux d’évènements Windows et est seulement en « info ». On les retrouver via l’Observateur d’événements Windows :
Le mieux à mon avis est de repasser par un système plus standard, soit un vrai fichier de logs.
Pour ce faire, il faut aller modifier le fichier de configuration du serveur SSH, généralement il se trouve ici :
C:\ProgramData\ssh\sshd_config
ou
%ProgramData%\ssh\sshd_config
Il faut rechercher les lignes suivantes :
[sshd_config]
# Logging
#SyslogFacility AUTH
#LogLevel INFO
Les décommenter et indiquer les valeurs suivantes :
Une fois la configuration modifiée et le serveur redémarré, il suffit de retenter une connexion puis d’aller consulter le fichier de log :
C:\ProgramData\ssh\logs\sshd.log
ou
%ProgramData%\ssh\logs\sshd.log
Remarque
Les problèmes courants se passent généralement autour des lignes liées au fichier authorized_keys ou administrators_authorized_keys, problèmes de droits ou chemin du fichier utilisé…
Test de SSH IBM i vers Windows
On peut maintenant tester le tout via QSH ou CALL QP2TERM. Grâce au fichier config la commande est simple : (l’option -T permet de désactiver l’allocation d’un pseudo terminal)
$ ssh -T windows
Microsoft Windows [version 10.0.19045.3208]
(c) Microsoft Corporation. Tous droits r
Il est maintenant possible d’exécuter des commandes Shell Windows à partir de cette connexion.
Si on voulait obtenir les mêmes niveaux de log côté client (IBM i) que l’on a activé côté Windows, on pourrait utiliser la commande suivante :
$ ssh -T -vvv windows
OpenSSH_8.0p1, OpenSSL 1.1.1t 7 Feb 2023
debug1: Reading configuration data /home/jl/.ssh/config
debug1: /home/jl/.ssh/config line 1: Applying options for *
debug1: /home/jl/.ssh/config line 4: Applying options for laptop
debug1: Reading configuration data /QOpenSys/QIBM/ProdData/SC1/OpenSSH/etc/ssh_config
...
Microsoft Windows [version 10.0.19045.3208]
(c) Microsoft Corporation. Tous droits r
https://www.gaia.fr/wp-content/uploads/2023/08/Openssh.gif191194Julien/wp-content/uploads/2017/05/logogaia.pngJulien2023-08-02 19:21:092023-08-11 16:00:34Se connecter à un serveur SSH exécuté sous Windows à partir d’un IBM i (Comment obtenir la log pour débuguer les problèmes éventuels)
En sélectionnant la bibliothèque et le fichier, vous pouvez soit utiliser le résultat dans un programme CLLE. Ou directement dans un select avec la fonctions SQL QCMDEXC
3) Sans générer de fichier
Cette méthode est moins connue, mais elle permet de traiter tous les membres d’un fichier sans générer de fichier intermédiaire
Vous allez avoir un programme CLLE, qui aura cette logique
Vous allez récupérer le premier membre RTVMBRD FILE(LIB/FIL) MBR(*FIRSTMBR) RTNMBR(&MBR) MONMSG MSGID(CPF0000) EXEC(do) ENDDO
Vous allez ensuite boucler sur les suivants RTVMBRD FILE(LIB/&FIL) MBR(&MBR *NEXT) RTNMBR(&MBR) MONMSG MSGID(CPF3049) EXEC(leave)
Vous allez ainsi lire tous vos membres de votre fichier.
Vous pouvez également utiliser cette méthode pour traiter des membres de transfert qui arriveraient dans votre fichier.
Conclusion :
Vous avez 3 solutions pour les traiter les membres d’un fichier, à vous de choisir la méthode la plus adapter à votre traitement
https://www.gaia.fr/wp-content/uploads/2017/02/team3.png600600Pierre-Louis BERTHOIN/wp-content/uploads/2017/05/logogaia.pngPierre-Louis BERTHOIN2023-07-25 12:10:102023-08-11 16:02:47Traiter les membres d’un fichier
Sécurisez vos services IBM i ! Nous ne le répéterons jamais suffisamment : vous devez crypter les accès au telnet 5250, au serveur de base de données etc … Bref partout où transitent aussi bien vos profils/mots de passe que vos informations métier.
Nous prenons ici l’exemple de telnet, le plus visuel.
Pour crypter vos connexions telnet : https://www.ibm.com/docs/en/i/7.5?topic=server-assigning-certificate-telnet
En synthèse :
Importer ou créer un certificat dans DCM (Digital Certificate Manager)
Associer ce certificat aux services à sécuriser : TELNET ici mais aussi CENTRAL, SIGNON, DATABASE …
Ne pas oublier de permettre la connexion sécurisée à telnet :
Permettre l'accès non sécurisé et sécurisé (ports 23 et 992) :
CHGTELNA ALWSSL(*YES)
Permettre l'accès sécurisé uniquement (port 992 uniquement) :
CHGTELNA ALWSSL(*ONLY)
Dès lors vous pouvez vous connecter avec ACS en mode sécurisé. Soit en indiquant au niveau de la configuration dans l’émulateur 5250 (menu Communication puis Configuration) :
Soit au niveau de la connexion système dans sa globalité :
A la prochaine connexion vous obtenez :
Mais comment ces certificats sont-ils gérés par ACS ?
Principe d’un certificat, chaîne de certification
Un certificat est une clé de cryptage permettant de chiffrer les données entre un serveur et un client.
La question est de savoir comment faire confiance à un certificat (celui de votre banque par exemple ?).
Un certificat est lui-même signé, c’est à dire validé, par une autorité de certification à laquelle nous faisons confiance.
Exemple avec les informations issues d’un navigateur :
Le navigateur fait confiance à www.volubis.fr car le certificat est lui-même signé par « Gandi Standard SSL CA 2 » et « USERTrust RSA Certification Authority » qui sont eux connus du navigateur :
D’autres critères entrent en compte comme la durée de validité par exemple
Pour un certificat non reconnu par votre navigateur, vous avez :
Validation par Access Client Solutions
ACS va utiliser la même mécanique : si l’autorité de certification est connue de ACS, alors le certificat est validé.
Si l’autorité n’est pas connue : demande à l’utilisateur de valider ou non l’accès.
Access Client Solutions utilise plusieurs magasins de certificats pour stocker les autorités :
le magasin lié à votre JVM qui exécute ACS
un magasin propre à ACS en complément
Magasin lié à la JVM
Pour trouver la JVM utilisée par ACS :
Java utilise par défaut un magasin de certificats JAVA_HOME\lib\security\cacerts. Ce magasin est protégé par un mot de passe (défaut = changeit)
Remarque :
Cette configuration par défaut peut être modifiée par fichier de configuration ou arguments de démarrage de la JVM.
Nous retrouvons bien notre autorité primaire « USERTrust RSA Certification Authority » :
Magasins liés à ACS
Par défaut, chaque utilisateur d’ACS dispose de son propre magasin de certificat (complémentaire à celui de l’environnement Java ci-dessus).
Dans les préférences vous retrouvez l’emplacement des configurations :
Access Client Solutions dispose également d’un outil de gestion des certificats pour son propre magasin uniquement : menu « Outils » puis « Gestion des clés » :
Cela vous permet d’importer, supprimer, voir vos certificats.
Remarque :
Cette configuration par défaut peut être modifiée par fichier de configuration AcsConfig.properties : permet d’indiquer l’emplacement du magasin de certificats.
Cas d’un certificat « internet »
Si vous avez acheté votre certificat auprès d’un organisme certificateur (Gandi pour nous, mais aussi OVH, Sectigo … Let’s encrypt gratuit), Access Client Solutions ne devrait rien vous demander et accepter directement le certificat : les autorités présentes dans le magasin associé à votre JVM permettent la validation.
Vous pouvez rencontrer des problèmes avec d’anciennes installations de Java non mises à jour : les nouvelles autorités de certification ne seront pas présentes. Bien sûr cela n’arrive jamais.
Cas d’un certificat « local »
Pour un certificat que vous avez généré sur votre IBM i, ou autre plateforme dans votre SI, si vous disposez de vos propres autorités de certification internes (fréquent dans les sociétés de grande taille) : Access Client Solutions ne dispose pas des autorités permettant la validation !
Remarque :
Si vos équipes de déploiement des postes client livrent les autorités de certification dans le magasin de la JVM, vous revenez dans le cas précédent.
A la première connexion, vous avez ce message :
Non : vous refusez la connexion
Oui : l’autorité de certification est ajoutée au magasin de certificats d’ACS.
Après avoir répondu « Oui » :
Aucun message affiché lors des prochaines connexions.
Changement de certificat
Comment faire en sorte que la sécurisation de vos services ou un changement de certificat soit transparent pour vos utilisateurs ?
Nous savons que demander à des centaines d’utilisateurs de répondre « Oui » peut générer un support très important aux équipes et être anxiogène.
Mise en place
Au-delà du certificat, il faut procéder aux changements de configurations : au niveau de la définition du système et/ou de la session 5250.
Pour le certificat, plusieurs solutions :
Vous disposez d’un poste modèle sur lequel vous avez installé ACS, et importez manuellement l’autorité de certification. Il vous suffit alors de déployer le fichier cacerts de ACS sur les différents postes.
Ce dernier est ici : "C:\Users\{USER}\Documents\IBM\iAccessClient\Private\{USER}\cacerts"
Dans le fichier de configuration AcsConfig.properties : vous pouvez indiquer un fichier cacerts mutualisé sur un lecteur réseau par exemple :
Injection du certificat en mode commande
ACS dispose de commande, avec option silencieuse :
/PLUGIN=certdl => demande à downloader l’autorité de certification et l’importer dans le magasin
/SYSTEM=nom système configuré => depuis le système en question
A intégrer dans vos outils de déploiement pour exécution sur chaque poste client ! Le certificat est ensuite visible dans le menu « Outils » puis « Gestion des clés ».
Renouvellement
Le certificat est issu de la même autorité de certification que le précédent : rien à faire ! C’est l’autorité qui est stockée, pas le certificat lui-même
Le certificat est issu d’une autre autorité (autre fournisseur, autorité précédente périmée ou invalidée) : il faut injecter l’autorité dans le magasin de certificat (cf Mise en place)
En synthèse : pas de difficulté, plusieurs solutions en fonction de votre organisation et outillage !
N’oubliez pas de renouveler vos certificats avant la date d’expiration …