JokerSoft — Documentation
JokerSoft — Documentation
JokerSoft — Documentación
Prérequis — chkcert_V1R1M1.py
Prerequisites — chkcert_V1R1M1.py
Requisitos previos — chkcert_V1R1M1.py
Ce qu'il faut installer et configurer avant d'exécuter le script, par plateforme.
What must be installed and configured before running the script, per platform.
Lo que hay que instalar y configurar antes de ejecutar el script, por plataforma.
Prérequis communs
Common prerequisites
Requisitos comunes
-
Python 3.9+Le script utilise des annotations de type modernes (
list[str]) et des dataclasses avecfield(). The script uses modern type annotations (list[str]) and dataclasses withfield(). El script utiliza anotaciones de tipo modernas (list[str]) y dataclasses confield(). -
cryptography
pip install cryptographyCœur de l'analyse X.509 — parsing, vérification de signature, extraction des extensions. Core of the X.509 analysis — parsing, signature verification, extension extraction. Núcleo del análisis X.509 — parsing, verificación de firma, extracción de extensiones. -
paramiko optionneloptionalopcional
pip install paramikoNécessaire uniquement pour--remote(récupération de certificats via SSH/SFTP). Only required for--remote(certificate retrieval over SSH/SFTP). Necesario únicamente para--remote(recuperación de certificados vía SSH/SFTP). -
constantes_V1R1M1.propertiesoptionneloptionalopcionalPlacé dansproperties/au même niveau que le script/exécutable. Absent = valeurs par défaut du script utilisées silencieusement. Placed inproperties/next to the script/binary. Missing = the script's built-in defaults are used silently. Colocado enproperties/al mismo nivel que el script/ejecutable. Ausente = se usan silenciosamente los valores por defecto del script. -
properties/class_bcolors.pyoptionneloptionalopcionalPersonnalisation de la palette de couleurs ANSI. Chargé dynamiquement mais contrôlé avant exécution. ANSI colour palette customisation. Loaded dynamically but checked before execution. Personalización de la paleta de colores ANSI. Cargado dinámicamente pero verificado antes de ejecutarse. -
properties/licence.keyoptionnel — Enterpriseoptional — Enterpriseopcional — EnterpriseLicence complète, verrouillée par organisation. Sans ce fichier, l'outil fonctionne en mode trial (30 jours / 50 fichiers). Full licence, locked to an organisation. Without this file, the tool runs in trial mode (30 days / 50 files). Licencia completa, vinculada a una organización. Sin este fichero, la herramienta funciona en modo trial (30 días / 50 ficheros). -
Accès en écriture au profil applicatif utilisateurWrite access to the user application profileAcceso de escritura al perfil de aplicación del usuario mode trial uniquementtrial mode onlysolo modo trialHors dossier d'installation, distinct de
W_FLD_TARGET_ANA_CER/U_FLD_TARGET_ANA_CER. Nécessaire uniquement en l'absence delicence.keyvalide — voir le bilan de protection. Outside the install folder, distinct fromW_FLD_TARGET_ANA_CER/U_FLD_TARGET_ANA_CER. Only needed in the absence of a validlicence.key— see the protection overview. Fuera de la carpeta de instalación, distinto deW_FLD_TARGET_ANA_CER/U_FLD_TARGET_ANA_CER. Solo necesario en ausencia de unlicence.keyválido — ver el balance de protección.
Téléchargement des prérequis
Prerequisite downloads
Descarga de prerrequisitos
| JDK 25.0.3+9 Windows | ↓ .zip↓ .zip↓ .zip |
| Microsoft OpenJDK 25.0.3 Windows | ↓ .zip↓ .zip↓ .zip |
| GSKit8 Windows | ↓ .zip↓ .zip↓ .zip |
| IBM MQC Redist 9.4.5.1 Windows | ↓ .zip↓ .zip↓ .zip |
| IBM MQC Redist 9.4.0.21 Windows | ↓ .zip↓ .zip↓ .zip |
| IBM MQC Redist 9.4.5.1 Linux x64 | ↓ .tar.gz↓ .tar.gz↓ .tar.gz |
| WinPython 3.12.101 Windows | ↓ .zip↓ .zip↓ .zip |
| chk_feature_V1R1 script de diagnosticdiagnostic scriptscript de diagnóstico | ↓ .zip↓ .zip↓ .zip |
Par plateforme
Per platform
Por plataforma
Windows
| JDK / JRE | JDK / JRE | JDK / JRE |
keytool.exe dans le PATH (pour .p12, .jks, .pfx, .p7b, cacerts) — fourni par tout JDK (Temurin, OpenJDK, Oracle). Sur JDK 25.0.3+, chkcert utilise automatiquement le flag -cacerts dédié plutôt que -keystore pour éviter un échec introduit par les builds keytool récents — aucune action requise côté utilisateur.
keytool.exe in the PATH (for .p12, .jks, .pfx, .p7b, cacerts) — bundled with any JDK (Temurin, OpenJDK, Oracle). On JDK 25.0.3+, chkcert automatically uses the dedicated -cacerts flag instead of -keystore to work around a failure introduced by recent keytool builds — no user action required.
keytool.exe en el PATH (para .p12, .jks, .pfx, .p7b, cacerts) — incluido en cualquier JDK (Temurin, OpenJDK, Oracle). En JDK 25.0.3+, chkcert usa automáticamente el flag dedicado -cacerts en lugar de -keystore para evitar un fallo introducido por las builds recientes de keytool — no requiere ninguna acción del usuario.
|
| MQ Client / GSKit | MQ Client / GSKit | MQ Client / GSKit |
runmqakm.exe (préféré) ou gsk8capicmd_64.exe/gsk8capicmd.exe dans le PATH (pour .kdb, .cms). Nécessite aussi lib64\ dans le PATH pour les DLL ICC.
runmqakm.exe (preferred) or gsk8capicmd_64.exe/gsk8capicmd.exe in the PATH (for .kdb, .cms). Also requires lib64\ in the PATH for ICC DLLs.
runmqakm.exe (preferido) o gsk8capicmd_64.exe/gsk8capicmd.exe en el PATH (para .kdb, .cms). También requiere lib64\ en el PATH para las DLL ICC.
|
| Runtime DLL | Runtime DLL | Runtime DLL |
Visual C++ Redistributable pour Visual Studio 2013 (x64) — requis spécifiquement par runmqakm.exe/GSKit (msvcr120.dll, msvcp120.dll), indépendamment de la version 2015-2022 déjà nécessaire pour chkcert.exe lui-même. Installer vc_redist.x64.exe depuis la page officielle Microsoft, section « Visual Studio 2013 » — les deux versions (2013 et 2015-2022) coexistent sans conflit et sont toutes deux nécessaires.
Visual C++ Redistributable for Visual Studio 2013 (x64) — specifically required by runmqakm.exe/GSKit (msvcr120.dll, msvcp120.dll), independently of the 2015-2022 version already needed by chkcert.exe itself. Install vc_redist.x64.exe from the official Microsoft page, "Visual Studio 2013" section — both versions (2013 and 2015-2022) coexist without conflict and are both required.
Visual C++ Redistributable para Visual Studio 2013 (x64) — requerido específicamente por runmqakm.exe/GSKit (msvcr120.dll, msvcp120.dll), independientemente de la versión 2015-2022 ya necesaria para chkcert.exe. Instalar vc_redist.x64.exe desde la página oficial de Microsoft, sección "Visual Studio 2013" — ambas versiones (2013 y 2015-2022) coexisten sin conflicto y ambas son necesarias.
|
|
Compilation .exe.exe buildCompilación .exe
optionneloptionalopcional
|
MSVC (Visual Studio Build Tools) ou MinGW64 (--mingw64) — via Nuitka. Sur poste sans accès Internet, Nuitka télécharge normalement le toolchain MinGW64 lui-même : prévoir une version figée pré-positionnée dans son cache local si le réseau est restreint.
MSVC (Visual Studio Build Tools) or MinGW64 (--mingw64) — via Nuitka. On a machine without Internet access, Nuitka normally downloads the MinGW64 toolchain itself: pre-stage a pinned version in its local cache if the network is restricted.
MSVC (Visual Studio Build Tools) o MinGW64 (--mingw64) — vía Nuitka. En un equipo sin acceso a Internet, Nuitka normalmente descarga el toolchain MinGW64 por sí mismo: prepara una versión fijada en su caché local si la red está restringida.
|
||
| Droits d'écriture | Write access | Permisos de escritura |
Sur properties/, et sur W_FLD_TARGET_ANA_CER (sortie JSON/HTML/log_error).
On properties/, and on W_FLD_TARGET_ANA_CER (JSON/HTML/log_error output).
Sobre properties/, y sobre W_FLD_TARGET_ANA_CER (salida JSON/HTML/log_error).
|
⚠️ Sur VDI sans accès Internet, Nuitka refuse d'utiliser un GCC/MinGW64 déjà présent dans le
PATH — il exige une build winlibs-gcc pinnée très précisément (numéro de version exact) et tente de la télécharger automatiquement depuis GitHub à chaque compilation. Sans réseau, l'échec se manifeste par une erreur getaddrinfo failed.
⚠️ On a VDI without Internet access, Nuitka refuses to use a GCC/MinGW64 already present in the PATH — it requires a very precisely pinned winlibs-gcc build (exact version number) and tries to download it automatically from GitHub on every build. With no network, this fails with a getaddrinfo failed error.
⚠️ En un VDI sin acceso a Internet, Nuitka se niega a usar un GCC/MinGW64 ya presente en el PATH — exige una build winlibs-gcc fijada con mucha precisión (número de versión exacto) e intenta descargarla automáticamente desde GitHub en cada compilación. Sin red, esto falla con un error getaddrinfo failed.
Correctif — pré-positionner le fichier en cacheFix — pre-stage the file in cacheSolución — prepositionar el fichero en caché
-
Depuis un poste avec accès Internet, télécharger le fichier exact indiqué dans le message d'erreur de Nuitka (le numéro de version change selon la version de Nuitka installée), par exemple :
From a machine with Internet access, download the exact file named in Nuitka's error message (the version number changes depending on the installed Nuitka version), for example:
Desde un equipo con acceso a Internet, descargar el fichero exacto indicado en el mensaje de error de Nuitka (el número de versión cambia según la versión de Nuitka instalada), por ejemplo:
https://github.com/brechtsanders/winlibs_mingw/releases/download/15.2.0posix-13.0.0-msvcrt-r6/winlibs-x86_64-posix-seh-gcc-15.2.0-mingw-w64msvcrt-13.0.0-r6.zip -
Copier ce
.zip(sans le décompresser, ni le renommer) sur le VDI, exactement à l'emplacement de cache indiqué par Nuitka dans son message d'erreur : Copy that.zip(without extracting or renaming it) to the VDI, exactly at the cache path Nuitka reported in its error message: Copiar ese.zip(sin descomprimirlo ni renombrarlo) al VDI, exactamente en la ruta de caché indicada por Nuitka en su mensaje de error:%LOCALAPPDATA%\Nuitka\Nuitka\Cache\DOWNLO~1\gcc\x86_64\<version>\<fichier>.zip - Relancer la même commande de compilation — Nuitka détecte le zip déjà présent, l'extrait lui-même localement, et n'effectue plus aucun appel réseau. Re-run the same build command — Nuitka detects the zip already there, extracts it locally itself, and no longer makes any network call. Volver a lanzar el mismo comando de compilación — Nuitka detecta el zip ya presente, lo extrae localmente por sí mismo, y ya no realiza ninguna llamada de red.
Le numéro de version winlibs-gcc attendu est lié à la version de Nuitka installée — une montée de version Nuitka peut nécessiter de répéter cette opération avec un nouveau nom de release.
The expected winlibs-gcc version number is tied to the installed Nuitka version — upgrading Nuitka may require repeating this operation with a new release name.
El número de versión winlibs-gcc esperado está ligado a la versión de Nuitka instalada — una actualización de Nuitka puede requerir repetir esta operación con un nuevo nombre de release.
Linux / macOS
| JDK / JRE | JDK / JRE | JDK / JRE |
keytool dans le PATH (/usr/bin/keytool ou via JAVA_HOME).
keytool in the PATH (/usr/bin/keytool or via JAVA_HOME).
keytool en el PATH (/usr/bin/keytool o vía JAVA_HOME).
|
| MQ Client / GSKit | MQ Client / GSKit | MQ Client / GSKit |
runmqakm (souvent /opt/mqm-redist/<version>/bin/ ou /opt/mqm/bin/) ou runmqckm/gsk8capicmd_64 dans le PATH.
runmqakm (often /opt/mqm-redist/<version>/bin/ or /opt/mqm/bin/) or runmqckm/gsk8capicmd_64 in the PATH.
runmqakm (a menudo /opt/mqm-redist/<version>/bin/ o /opt/mqm/bin/) o runmqckm/gsk8capicmd_64 en el PATH.
|
| Locale / langue | Locale / language | Configuración regional / idioma |
Le script force -J-Duser.language=en (keytool) et -locale en (runmqakm) automatiquement — évite un bug JDK connu (JDK-8191137).
The script forces -J-Duser.language=en (keytool) and -locale en (runmqakm) automatically — works around a known JDK bug (JDK-8191137).
El script fuerza automáticamente -J-Duser.language=en (keytool) y -locale en (runmqakm) — evita un bug conocido del JDK (JDK-8191137).
|
|
gcc / patchelf
optionneloptionalopcional
|
sudo dnf install gcc patchelf (RHEL/AlmaLinux) — pas requis à l'exécution, seulement pour compiler un binaire via Nuitka.
sudo dnf install gcc patchelf (RHEL/AlmaLinux) — not needed at runtime, only to build a Nuitka binary.
sudo dnf install gcc patchelf (RHEL/AlmaLinux) — no necesario en tiempo de ejecución, solo para compilar un binario con Nuitka.
|
||
|
ccache
optionneloptionalopcional
|
Accélère les recompilations répétées — nécessite le dépôt EPEL sous RHEL. Speeds up repeated rebuilds — requires the EPEL repository on RHEL. Acelera las recompilaciones repetidas — requiere el repositorio EPEL en RHEL. | ||
| Droits d'écriture | Write access | Permisos de escritura |
Sur U_FLD_TARGET_ANA_CER (sortie), et /proc lisible (détection fiable du binaire compilé en mode onefile).
On U_FLD_TARGET_ANA_CER (output), and readable /proc (reliable onefile-binary detection).
Sobre U_FLD_TARGET_ANA_CER (salida), y /proc legible (detección fiable del binario compilado en modo onefile).
|
Environnements testés
Tested environments
Entornos probados
Versions concrètes de l'OS, Python, Nuitka et du compilateur C, capturées le 17.07.2026 via le script de diagnostic
chk_feature_V1R1.sh sur chaque plateforme. Le pavé AlmaLinux renvoie vers un exemple complet de rapport d'environnement (outils requis à l'exécution du binaire compilé, sans prérequis Python).
Concrete OS, Python, Nuitka and C compiler versions, captured on 2026-07-17 via the chk_feature_V1R1.sh diagnostic script on each platform. The AlmaLinux card links to a full sample environment report (tools required to run the compiled binary, no Python prerequisite).
Versiones concretas del SO, Python, Nuitka y del compilador C, capturadas el 17.07.2026 mediante el script de diagnóstico chk_feature_V1R1.sh en cada plataforma. La tarjeta de AlmaLinux enlaza a un ejemplo completo de informe de entorno (herramientas necesarias para ejecutar el binario compilado, sin requisito de Python).
Windows 11 Enterprise
| Version OS | OS version | Versión del SO | 10.0.26200 (build 26200)(build 26200) |
Windows 10 Enterprise
| Version OS | OS version | Versión del SO | 10.0.19045 |
Red Hat Enterprise Linux 9.4
| Noyau | Kernel | Kernel | 5.14.0-427.42.1.el9_4.x86_64 |
| Python | Python | 3.9.18 Fedora Python | |
| pip | pip | 26.0.1 | |
| Nuitka | Nuitka | 2.8.9 | |
| gcc | gcc | 11.4.1 (Red Hat 11.4.1-3) |
Red Hat Enterprise Linux 9.6
| Noyau | Kernel | Kernel | 5.14.0-570.62.1.el9_6.x86_64 |
| Python | Python | 3.9.21 Fedora Python | |
| pip | pip | 26.0.1 | |
| Nuitka | Nuitka | 2.8.9 | |
| gcc | gcc | 11.5.0 (Red Hat 11.5.0-5) |
AlmaLinux 10.2 productionproductionproducción
| Noyau | Kernel | Kernel | 6.12.0-211.32.1.el10_2.x86_64 |
| Python | Python | 3.12.13 Fedora Python | |
| pip | pip | 23.3.2 | |
| Nuitka | Nuitka | 4.1.3 | |
| gcc | gcc | 14.3.1 (Red Hat 14.3.1-4) |
Unix génériqueGeneric UnixUnix genérico Ubuntu 26.04 LTS
| Noyau | Kernel | Kernel | 7.0.0-14-generic |
| Python | Python | 3.14.4 Debian Python | |
| pip | pip | 25.1.1 | |
| Nuitka | Nuitka | 4.1.3 | |
| gcc | gcc | 15.2.0 (Ubuntu 15.2.0-16ubuntu1) |
Exemples de
PATH validés
Validated PATH examples
Ejemplos de PATH validados
Windows
— option 1 (IBM MQ Client complet)
— option 1 (full IBM MQ Client)
— opción 1 (IBM MQ Client completo)
C:\Tools\WPy64-312101\python
C:\Tools\WPy64-312101\python\Scripts
C:\Tools\jdk-25.0.3+9\bin
C:\Tools\IBM-MQC_9.4.5.1\bin64
C:\Tools\IBM-MQC_9.4.5.1\gskit8\bin
C:\Tools\IBM-MQC_9.4.5.1\gskit8\lib64
%PATH%
Windows
— option 2 (GSKit autonome, sans MQ Client)
— option 2 (standalone GSKit, no MQ Client)
— opción 2 (GSKit independiente, sin MQ Client)
C:\Tools\WPy64-312101\python
C:\Tools\WPy64-312101\python\Scripts
C:\Tools\jdk-25.0.3+9\bin
C:\Tools\gskit8_64\bin
C:\Tools\gskit8_64\lib64
%PATH%
RHEL 9.4
— serveur MQSeries
— MQSeries server
— servidor MQSeries
/opt/mqm/bin
/opt/mqm/samp/bin
/opt/mqm/java/bin
/opt/mqm/gskit8/bin
Unix génériqueGeneric UnixUnix genérico
— MQ Client redistribuable + JDK 25
— redistributable MQ Client + JDK 25
— MQ Client redistribuible + JDK 25
/opt/mqm-redist/9.4.5.1/bin
/usr/lib/jvm/java-25-openjdk/bin
Variante GSKit9 autonome :
/opt/gskit9/bin, /opt/gskit9/lib64
Standalone GSKit9 variant: /opt/gskit9/bin, /opt/gskit9/lib64
Variante GSKit9 independiente: /opt/gskit9/bin, /opt/gskit9/lib64
Scripts Windows de positionnement du
PATH
Windows PATH setup scripts
Scripts Windows de configuración del PATH
Deux scripts
.cmd prêts à l'emploi ouvrent une invite de commandes avec le PATH déjà positionné selon l'une des deux options ci-dessus. Chacun vérifie l'existence de chaque répertoire avant de l'ajouter et affiche un état coloré (vert = présent, rouge = manquant) — les répertoires absents ne bloquent pas l'exécution, ils sont simplement signalés.
Two ready-to-use .cmd scripts open a command prompt with the PATH already set for either option above. Each checks that every directory exists before adding it and prints a coloured status (green = present, red = missing) — missing directories don't block execution, they're simply flagged.
Dos scripts .cmd listos para usar abren un símbolo del sistema con el PATH ya configurado según una de las dos opciones anteriores. Cada uno verifica que cada directorio exista antes de añadirlo y muestra un estado coloreado (verde = presente, rojo = ausente) — los directorios ausentes no bloquean la ejecución, simplemente se señalan.
Windows_Add_PATH_MQClient.cmd
— option 1 (IBM MQ Client complet)
— option 1 (full IBM MQ Client)
— opción 1 (IBM MQ Client completo)
Voir le code du script View script code Ver el código del script
@echo off
REM ANSI colour setup (native, no PowerShell) - works on Windows 10 1909+ / Windows 11
REM ESC is generated at runtime rather than stored as a raw byte, to avoid
REM silent corruption if this file is later edited/saved with a different encoding.
for /F %%a in ('echo prompt $E^| cmd') do set "ESC=%%a"
set "GREEN=%ESC%[92m"
set "RED=%ESC%[91m"
set "YELLOW=%ESC%[93m"
set "RESET=%ESC%[0m"
REM # Install openjdk version "25.0.3" 2026-04-21 LTS
set JdkWI=C:\Tools\jdk-25.0.3+9\bin
REM Mandatory Microsoft Visual C++
REM # Install 9.4.5.1-IBM-MQC-Redist-Win64_lts
set MQClientWI=C:\Tools\IBM-MQC_9.4.5.1\bin64
set GSKitBinWI=C:\Tools\IBM-MQC_9.4.5.1\gskit8\bin
set GSKitLibWI=C:\Tools\IBM-MQC_9.4.5.1\gskit8\lib64
set GSKitWI=%GSKitBinWI%;%GSKitLibWI%
echo.
echo === Checking directories ===
set ALL_OK=1
call :check_dir "%JdkWI%" "JDK"
call :check_dir "%MQClientWI%" "MQ Client"
call :check_dir "%GSKitBinWI%" "GSKit bin"
call :check_dir "%GSKitLibWI%" "GSKit lib64"
echo.
if "%ALL_OK%"=="1" (
echo %GREEN%[OK] All directories are present.%RESET%
) else (
echo %YELLOW%[WARNING] One or more directories are missing - PATH will be set anyway.%RESET%
)
echo.
set PATH=%JdkWI%;%MQClientWI%;%GSKitWI%;%PATH%
if exist "%JdkWI%" (
cd /d "%JdkWI%"
) else (
echo %YELLOW%[WARNING] JDK not found - keeping current directory.%RESET%
)
cmd
exit /b
:check_dir
if exist "%~1" (
echo %GREEN%[OK] %~2 : %~1%RESET%
) else (
echo %RED%[MISSING] %~2 : %~1%RESET%
set ALL_OK=0
)
exit /b
Windows_Add_PATH_Only_GsKit8.cmd
— option 2 (GSKit autonome, sans MQ Client)
— option 2 (standalone GSKit, no MQ Client)
— opción 2 (GSKit independiente, sin MQ Client)
Voir le code du script View script code Ver el código del script
@echo off
REM ANSI colour setup (native, no PowerShell) - works on Windows 10 1909+ / Windows 11
REM ESC is generated at runtime rather than stored as a raw byte, to avoid
REM silent corruption if this file is later edited/saved with a different encoding.
for /F %%a in ('echo prompt $E^| cmd') do set "ESC=%%a"
set "GREEN=%ESC%[92m"
set "RED=%ESC%[91m"
set "YELLOW=%ESC%[93m"
set "RESET=%ESC%[0m"
REM # Install openjdk version "25.0.3" 2026-04-21 LTS
set JdkWI=C:\Tools\jdk-25.0.3+9\bin
REM Mandatory Microsoft Visual C++
REM # Install 9.4.5.1-IBM-MQC-Redist-Win64_lts
REM set MQClientWI=C:\Tools\IBM-MQC_9.4.5.1\bin64
set GSKitBinWI=C:\Tools\gskit8_64\bin
set GSKitLibWI=C:\Tools\gskit8_64\lib64
set GSKitWI=%GSKitBinWI%;%GSKitLibWI%
echo.
echo === Checking directories ===
set ALL_OK=1
call :check_dir "%JdkWI%" "JDK"
call :check_dir "%GSKitBinWI%" "GSKit bin"
call :check_dir "%GSKitLibWI%" "GSKit lib64"
echo.
if "%ALL_OK%"=="1" (
echo %GREEN%[OK] All directories are present.%RESET%
) else (
echo %YELLOW%[WARNING] One or more directories are missing - PATH will be set anyway.%RESET%
)
echo.
set PATH=%JdkWI%;%GSKitWI%;%PATH%
if exist "%JdkWI%" (
cd /d "%JdkWI%"
) else (
echo %YELLOW%[WARNING] JDK not found - keeping current directory.%RESET%
)
cmd
exit /b
:check_dir
if exist "%~1" (
echo %GREEN%[OK] %~2 : %~1%RESET%
) else (
echo %RED%[MISSING] %~2 : %~1%RESET%
set ALL_OK=0
)
exit /b
Les chemins (
JdkWI, MQClientWI, GSKitBinWI, GSKitLibWI) sont à adapter en tête de script selon l'installation réelle du poste. La coloration utilise des séquences ANSI natives (aucune dépendance externe) — le caractère ESC est généré à l'exécution via l'astuce prompt $E plutôt que stocké comme octet brut dans le fichier, pour éviter toute corruption silencieuse lors d'une future édition. Fonctionne nativement sur Windows 10 version 1909 et ultérieure, ainsi que sur Windows 11.
The paths (JdkWI, MQClientWI, GSKitBinWI, GSKitLibWI) should be adjusted at the top of the script to match the actual machine's installation. Colouring uses native ANSI sequences (no external dependency) — the ESC character is generated at runtime via the prompt $E trick rather than stored as a raw byte in the file, to avoid silent corruption on future edits. Works natively on Windows 10 version 1909 and later, as well as Windows 11.
Las rutas (JdkWI, MQClientWI, GSKitBinWI, GSKitLibWI) deben ajustarse al inicio del script según la instalación real del equipo. El coloreado usa secuencias ANSI nativas (sin dependencia externa) — el carácter ESC se genera en tiempo de ejecución mediante el truco prompt $E en lugar de almacenarse como byte crudo en el fichero, para evitar corrupción silenciosa en futuras ediciones. Funciona de forma nativa en Windows 10 versión 1909 y posteriores, así como en Windows 11.
Analyse distante SSH — mode
--remote
Remote SSH analysis — --remote mode
Análisis remoto SSH — modo --remote
Le mode
--remote s'appuie sur paramiko pour récupérer des certificats sur un serveur distant via SSH/SFTP. Pour un usage non interactif (scripts, cron), l'authentification doit se faire par échange de clés, sans mot de passe.
The --remote mode relies on paramiko to retrieve certificates from a remote server over SSH/SFTP. For non-interactive use (scripts, cron), authentication must be key-based, without a password.
El modo --remote se apoya en paramiko para recuperar certificados de un servidor remoto vía SSH/SFTP. Para un uso no interactivo (scripts, cron), la autenticación debe hacerse por intercambio de claves, sin contraseña.
La première connexion vers un nouvel hôte échoue sans
--trust-new-host (host key SSH inconnue) — voir étape 4 ci-dessous pour l'alimenter en amont via known_hosts. Le timeout de connexion (--remote-timeout, défaut 30s) peut être augmenté pour un serveur distant ou lent.
The first connection to a new host fails without --trust-new-host (unknown SSH host key) — see step 4 below to pre-populate it via known_hosts instead. The connection timeout (--remote-timeout, default 30s) can be increased for a slow or distant server.
La primera conexión a un host nuevo falla sin --trust-new-host (clave de host SSH desconocida) — ver el paso 4 más abajo para prepoblarla vía known_hosts en su lugar. El timeout de conexión (--remote-timeout, por defecto 30s) puede aumentarse para un servidor lento o distante.
Cette section décrit uniquement la mise en place de l'échange de clés SSH. Elle ne traite pas de la saisie ou de l'affichage d'un mot de passe en clair.
This section only covers setting up the SSH key exchange. It does not cover entering or displaying a plaintext password.
Esta sección solo cubre la configuración del intercambio de claves SSH. No trata la introducción ni la visualización de una contraseña en texto claro.
1. Variables du scénario 1. Scenario variables 1. Variables del escenario
🔑 Plus simple à suivre : le générateur interactif d'échange de clés SSH calcule et affiche la procédure complète pour votre scénario (Unix↔Unix, Windows↔Unix, Windows↔Windows), sans avoir à adapter les commandes ci-dessous à la main.
🔑 Easier to follow: the interactive SSH key exchange generator computes and displays the full procedure for your scenario (Unix↔Unix, Windows↔Unix, Windows↔Windows), with no need to manually adapt the commands below.
🔑 Más fácil de seguir: el generador interactivo de intercambio de claves SSH calcula y muestra el procedimiento completo para su escenario (Unix↔Unix, Windows↔Unix, Windows↔Windows), sin necesidad de adaptar manualmente los comandos siguientes.
L'utilisateur distant peut être identique à l'utilisateur local, ou différent (compte de service dédié). Valables quel que soit l'OS du poste local ou du serveur distant.
The remote user can be the same as the local user, or different (a dedicated service account). Applies regardless of the local machine's or remote server's OS.
El usuario remoto puede ser el mismo que el local, o diferente (una cuenta de servicio dedicada). Válido sea cual sea el SO del equipo local o del servidor remoto.
RMT_SERVER="Remote_Server" # Serveur distant# Remote server# Servidor remoto
LCL_USER="LCL_USER" # Utilisateur local# Local user# Usuario local
# ou# or# o
LCL_USER="user01" # Utilisateur local# Local user# Usuario local
# ou# or# o
LCL_USER="${USER}" # Utilisateur local# Local user# Usuario local
RMT_USER="${LCL_USER}" # Utilisateur distant = utilisateur local# Remote user = local user# Usuario remoto = usuario local
# ou# or# o
RMT_USER="usrrmt01" # Utilisateur distant dédié# Dedicated remote user# Usuario remoto dedicado
2. Génération de la paire de clés (poste local) 2. Key pair generation (local machine) 2. Generación del par de claves (equipo local)
Effectuée une seule fois, sur le poste qui exécutera
chkcert --remote. L'algorithme ed25519 est recommandé — plus rapide et plus robuste que RSA, supporté par toute version récente d'OpenSSH (Linux, AIX, et Windows 10/11 depuis OpenSSH intégré).
Done once, on the machine that will run chkcert --remote. ed25519 is recommended — faster and stronger than RSA, supported by any recent OpenSSH version (Linux, AIX, and Windows 10/11 via built-in OpenSSH).
Se realiza una sola vez, en el equipo que ejecutará chkcert --remote. Se recomienda ed25519 — más rápido y robusto que RSA, compatible con cualquier versión reciente de OpenSSH (Linux, AIX, y Windows 10/11 vía OpenSSH integrado).
🐧 Linux / AIX (bash)
ssh-keygen -t ed25519 -C "${LCL_USER}@$HOSTNAME" -f ~/.ssh/id_ed25519 -N ""
# — ou, alternative RSA récente (4096 bits) si ed25519 n'est pas disponible —# — or, recent RSA alternative (4096 bits) if ed25519 is not available —# — o, alternativa RSA reciente (4096 bits) si ed25519 no está disponible —
ssh-keygen -t rsa -b 4096 -C "${LCL_USER}@$HOSTNAME" -f ~/.ssh/id_rsa -N ""
🪟 Windows (PowerShell)
ssh-keygen -t ed25519 -C "$LCL_USER@$env:COMPUTERNAME" -f "$env:USERPROFILE\.ssh\id_ed25519" -N '""'
# — ou, alternative RSA récente (4096 bits) si ed25519 n'est pas disponible —# — or, recent RSA alternative (4096 bits) if ed25519 is not available —# — o, alternativa RSA reciente (4096 bits) si ed25519 no está disponible —
ssh-keygen -t rsa -b 4096 -C "$LCL_USER@$env:COMPUTERNAME" -f "$env:USERPROFILE\.ssh\id_rsa" -N '""'
RSA reste utile en environnement contraint (très vieux serveur AIX, politique interne imposant RSA) — dans ce cas, utiliser 4096 bits systématiquement (2048 bits est désormais considéré comme un plancher, pas une cible). Toutes les commandes des étapes suivantes s'appliquent à l'identique en remplaçant
id_ed25519 par id_rsa.
RSA remains useful in constrained environments (very old AIX server, internal policy mandating RSA) — in that case, always use 4096 bits (2048 bits is now considered a floor, not a target). All commands in the following steps apply identically by replacing id_ed25519 with id_rsa.
RSA sigue siendo útil en entornos restringidos (servidor AIX muy antiguo, política interna que exige RSA) — en ese caso, usar siempre 4096 bits (2048 bits ahora se considera un mínimo, no un objetivo). Todos los comandos de los pasos siguientes se aplican igual sustituyendo id_ed25519 por id_rsa.
Sur Windows, le client OpenSSH est intégré depuis Windows 10 1809 (
Paramètres → Applications facultatives → OpenSSH Client s'il est absent). Chemin par défaut : %USERPROFILE%\.ssh\.
On Windows, the OpenSSH client is built in since Windows 10 1809 (Settings → Optional features → OpenSSH Client if missing). Default path: %USERPROFILE%\.ssh\.
En Windows, el cliente OpenSSH está integrado desde Windows 10 1809 (Configuración → Características opcionales → OpenSSH Client si falta). Ruta por defecto: %USERPROFILE%\.ssh\.
3. Copie de la clé publique vers le serveur distant 3. Copying the public key to the remote server 3. Copia de la clave pública al servidor remoto
4 combinaisons possibles selon l'OS du poste local et du serveur distant — la commande diffère surtout parce que
ssh-copy-id n'existe pas nativement sous Windows, et parce qu'un serveur Windows range les clés différemment selon que le compte distant est administrateur ou non.
4 possible combinations depending on the local and remote OS — the command mainly differs because ssh-copy-id doesn't exist natively on Windows, and because a Windows server stores keys differently depending on whether the remote account is an administrator.
4 combinaciones posibles según el SO local y el remoto — el comando difiere principalmente porque ssh-copy-id no existe de forma nativa en Windows, y porque un servidor Windows almacena las claves de forma distinta según si la cuenta remota es administradora.
🐧 → 🐧 Unix/AIX → Unix/AIXUnix/AIX → Unix/AIXUnix/AIX → Unix/AIX
ssh-copy-id -i ~/.ssh/id_ed25519.pub ${RMT_USER}@${RMT_SERVER}
# — ou, avec une clé RSA —# — or, with an RSA key —# — o, con una clave RSA —
ssh-copy-id -i ~/.ssh/id_rsa.pub ${RMT_USER}@${RMT_SERVER}
🐧 → 🪟 Unix/AIX → WindowsUnix/AIX → WindowsUnix/AIX → Windows
# Compte distant standard (non-administrateur)# Standard remote account (non-administrator)# Cuenta remota estándar (no administradora)
ssh-copy-id -i ~/.ssh/id_ed25519.pub ${RMT_USER}@${RMT_SERVER}
# — ou, avec une clé RSA —# — or, with an RSA key —# — o, con una clave RSA —
ssh-copy-id -i ~/.ssh/id_rsa.pub ${RMT_USER}@${RMT_SERVER}
🪟 → 🐧 Windows → Unix/AIXWindows → Unix/AIXWindows → Unix/AIX
# pas de ssh-copy-id sous Windows# no ssh-copy-id on Windows# sin ssh-copy-id en Windows
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" | ssh ${RMT_USER}@${RMT_SERVER} "cat >> ~/.ssh/authorized_keys"
# — ou, avec une clé RSA —# — or, with an RSA key —# — o, con una clave RSA —
Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub" | ssh ${RMT_USER}@${RMT_SERVER} "cat >> ~/.ssh/authorized_keys"
🪟 → 🪟 Windows → WindowsWindows → WindowsWindows → Windows
# Compte distant standard (non-administrateur)# Standard remote account (non-administrator)# Cuenta remota estándar (no administradora)
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" | ssh ${RMT_USER}@${RMT_SERVER} "cat >> .ssh/authorized_keys"
# — ou, avec une clé RSA —# — or, with an RSA key —# — o, con una clave RSA —
Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub" | ssh ${RMT_USER}@${RMT_SERVER} "cat >> .ssh/authorized_keys"
⚠️ Cas particulier — serveur Windows avec un compte distant administrateur : OpenSSH Server ignore alors
authorized_keys dans le profil utilisateur et exige à la place %ProgramData%\ssh\administrators_authorized_keys, avec des permissions ACL restreintes (lecture réservée à SYSTEM et Administrators) :
⚠️ Special case — Windows server with an administrator remote account: OpenSSH Server then ignores authorized_keys in the user profile and instead requires %ProgramData%\ssh\administrators_authorized_keys, with restricted ACL permissions (read access limited to SYSTEM and Administrators):
⚠️ Caso particular — servidor Windows con una cuenta remota administradora: OpenSSH Server ignora entonces authorized_keys en el perfil de usuario y exige en su lugar %ProgramData%\ssh\administrators_authorized_keys, con permisos ACL restringidos (lectura limitada a SYSTEM y Administrators):
ssh ${RMT_USER}@${RMT_SERVER} "powershell -Command \"Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value '<contenu de id_ed25519.pub ou id_rsa.pub><content of id_ed25519.pub or id_rsa.pub><contenido de id_ed25519.pub o id_rsa.pub>'\""
ssh ${RMT_USER}@${RMT_SERVER} "icacls.exe %ProgramData%\ssh\administrators_authorized_keys /inheritance:r /grant Administrators:F /grant SYSTEM:F"
4. Vérification du système distant 4. Remote system check 4. Verificación del sistema remoto
La commande d'identification du système diffère selon l'OS distant — utile pour confirmer la cible avant d'automatiser l'appel à
--remote.
The system-identification command differs by remote OS — useful to confirm the target before automating the --remote call.
El comando de identificación del sistema difiere según el SO remoto — útil para confirmar el destino antes de automatizar la llamada a --remote.
# AIX# AIX# AIX
ssh ${LCL_USER}@${RMT_SERVER} 'oslevel;echo -e \n;hostname'
# Linux# Linux# Linux
ssh ${LCL_USER}@${RMT_SERVER} 'cat /etc/system-release;hostname'
# Windows# Windows# Windows
ssh ${LCL_USER}@${RMT_SERVER} "systeminfo | findstr /B /C:\"OS Name\" /C:\"OS Version\"; hostname"
5. Test final de la connexion 5. Final connection test 5. Prueba final de conexión
🐧 Linux / AIX (bash)
ssh -i ~/.ssh/id_ed25519 "${LCL_USER}@${RMT_SERVER}"
# — ou, avec une clé RSA —# — or, with an RSA key —# — o, con una clave RSA —
ssh -i ~/.ssh/id_rsa "${LCL_USER}@${RMT_SERVER}"
🪟 Windows (PowerShell)
ssh -i "$env:USERPROFILE\.ssh\id_ed25519" "$LCL_USER@$RMT_SERVER"
# — ou, avec une clé RSA —# — or, with an RSA key —# — o, con una clave RSA —
ssh -i "$env:USERPROFILE\.ssh\id_rsa" "$LCL_USER@$RMT_SERVER"
Si cette commande se connecte sans demander de mot de passe, l'échange de clés est opérationnel. Selon la clé générée à l'étape 2 :
chkcert --remote --remote-user ${RMT_USER} --remote-key ~/.ssh/id_ed25519 ou ~/.ssh/id_rsa (Unix/AIX), --remote-key %USERPROFILE%\.ssh\id_ed25519 ou %USERPROFILE%\.ssh\id_rsa (Windows) — pourra s'exécuter sans intervention manuelle, quel que soit l'OS du serveur distant.
If this command connects without a password prompt, the key exchange is working. Depending on the key generated in step 2: chkcert --remote --remote-user ${RMT_USER} --remote-key ~/.ssh/id_ed25519 or ~/.ssh/id_rsa (Unix/AIX), --remote-key %USERPROFILE%\.ssh\id_ed25519 or %USERPROFILE%\.ssh\id_rsa (Windows) — can run unattended, regardless of the remote server's OS.
Si este comando se conecta sin pedir contraseña, el intercambio de claves funciona. Según la clave generada en el paso 2: chkcert --remote --remote-user ${RMT_USER} --remote-key ~/.ssh/id_ed25519 o ~/.ssh/id_rsa (Unix/AIX), --remote-key %USERPROFILE%\.ssh\id_ed25519 o %USERPROFILE%\.ssh\id_rsa (Windows) — podrá ejecutarse sin intervención manual, sea cual sea el SO del servidor remoto.
6. Points de vigilance côté serveur distant 6. Things to check on the remote server 6. Puntos de atención en el servidor remoto
-
Permissions strictes attendues par
sshd(serveur Unix/AIX) : dossier personnel non accessible en écriture par le groupe/autres,~/.sshen700,~/.ssh/authorized_keysen600. Strict permissions expected bysshd(Unix/AIX server): home directory not group/world-writable,~/.sshat700,~/.ssh/authorized_keysat600. Permisos estrictos esperados porsshd(servidor Unix/AIX): directorio personal sin escritura para grupo/otros,~/.sshen700,~/.ssh/authorized_keysen600. -
Sur AIX, vérifier que
PubkeyAuthentication yesest actif dans/etc/ssh/sshd_config. On AIX, verifyPubkeyAuthentication yesis enabled in/etc/ssh/sshd_config. En AIX, verificar quePubkeyAuthentication yesesté activo en/etc/ssh/sshd_config. -
Sur serveur Windows (OpenSSH Server), vérifier que le service
sshdest démarré et que le rôle optionnel OpenSSH Server est bien installé — non présent par défaut sur Windows 10/11, à activer viaParamètres → Applications facultativesouAdd-WindowsCapability. On a Windows server (OpenSSH Server), verify thesshdservice is running and the optional OpenSSH Server feature is installed — not present by default on Windows 10/11, enable viaSettings → Optional featuresorAdd-WindowsCapability. En un servidor Windows (OpenSSH Server), verificar que el serviciosshdesté en ejecución y que la característica opcional OpenSSH Server esté instalada — no está presente por defecto en Windows 10/11, se activa víaConfiguración → Características opcionalesoAdd-WindowsCapability. -
Si
RMT_USER≠LCL_USER, s'assurer que ce compte de service dispose des droits de lecture nécessaires sur les fichiers de certificats à analyser. IfRMT_USER≠LCL_USER, make sure that service account has read access to the certificate files being analyzed. SiRMT_USER≠LCL_USER, asegurarse de que esa cuenta de servicio tenga permisos de lectura sobre los ficheros de certificados a analizar.
Jamais nécessaire
Never required
Nunca necesario
-
runmqakmETkeytoolsimultanément — le script détecte dynamiquement l'outil disponible et n'échoue que si aucun n'est trouvé pour le type de fichier traité.runmqakmANDkeytoolat the same time — the script dynamically detects whichever is available and only fails if none matches the file type being processed.runmqakmYkeytoolsimultáneamente — el script detecta dinámicamente la herramienta disponible y solo falla si ninguna coincide con el tipo de fichero tratado. -
Droits administrateur/root pour l'exécution normale (uniquement pour l'installation des outils, ou
mklinksous Windows lors de la compilation). Administrator/root rights for normal execution (only needed to install the tools themselves, or formklinkon Windows during compilation). Derechos de administrador/root para la ejecución normal (solo necesarios para instalar las herramientas, o paramklinken Windows durante la compilación). - Connexion Internet à l'exécution — uniquement pour l'installation initiale des dépendances Python ou la compilation Nuitka en mode standalone. Internet access at runtime — only needed for the initial Python dependency install or standalone Nuitka compilation. Conexión a Internet en tiempo de ejecución — solo necesaria para la instalación inicial de las dependencias Python o la compilación Nuitka en modo standalone.