check-certificat.com / chkcert_V1R1M1.py / Audit sécurité Security audit Auditoría de seguridad
chkcert_V1R1M1_rapport_audit_securite.html MAJ 17.07.2026 Updated 2026-07-17 Act. 17.07.2026
SynthèseSummaryResumen

L'outil manipule des données sensibles d'inventaire certificat (clés, chaînes, mots de passe de keystores). Le périmètre de cet audit couvre la protection contre l'injection dans les rapports HTML, la gestion des secrets, la robustesse face aux outils externes (keytool/runmqakm) et la surface exposée par le mode distant SSH/SFTP. The tool handles sensitive certificate inventory data (keys, chains, keystore passwords). This audit's scope covers protection against HTML report injection, secrets handling, robustness against external tools (keytool/runmqakm), and the surface exposed by remote SSH/SFTP mode. La herramienta maneja datos sensibles de inventario de certificados (claves, cadenas, contraseñas de almacenes). El alcance de esta auditoría cubre la protección contra inyección en los informes HTML, la gestión de secretos, la robustez frente a herramientas externas (keytool/runmqakm) y la superficie expuesta por el modo remoto SSH/SFTP.

Contrôles de sécurité en placeSecurity controls in placeControles de seguridad vigentes
ContrôleDétail
Échappement HTML systématiqueToute valeur d'origine certificat (CN, SAN, subject, issuer) affichée dans les rapports HTML passe par un échappement explicite avant insertion — 28 points d'échappement identifiés dans le générateur de rapport.
Masquage des mots de passeLes mots de passe sont affichés en **** dans la console et dans les commandes générées.
Validation du fichier de personnalisation couleursLe fichier optionnel de personnalisation couleurs est contrôlé avant exécution.
Licence Enterprise vérifiéeproperties/licence.key est vérifié — pas de simple flag de confiance.
Codes de sortie standardisés6 codes normalisés (0 succès, 1 erreur utilisateur, 2 licence, 3 parsing, 127 outil manquant, 130 SIGINT) — permettent une intégration fiable en pipeline/cron sans ambiguïté sur la cause d'échec.
Plancher RSA non contournableMIN_RSA_KEY_SIZE est configurable à la hausse via constantes_V1R1M1.properties mais toute valeur sous 2048 bits est rejetée avec warning et ignorée.
Authentification SSH par clé recommandéeLe mode distant privilégie --remote-key ; --remote-pass reste disponible mais documenté comme solution de repli.
Clés d'hôte SSH inconnues rejetées par défautUne première connexion vers un hôte non répertorié échoue sans l'option explicite --trust-new-host — pas d'acceptation automatique silencieuse.
Fichiers d'état trial protégésStockage redondant et vérifié — détail dans le bilan de protection.
ControlDetail
Systematic HTML escapingEvery certificate-derived value (CN, SAN, subject, issuer) shown in HTML reports goes through explicit escaping before insertion — 28 escaping points identified in the report generator.
Password maskingPasswords are shown as **** in console output and generated commands.
Colour customisation file validationThe optional colour customisation file is checked before execution.
Verified Enterprise licenceproperties/licence.key is verified — not a simple trust flag.
Standardised exit codes6 normalised codes (0 success, 1 user error, 2 licence, 3 parsing, 127 missing tool, 130 SIGINT) — enable reliable pipeline/cron integration with unambiguous failure causes.
Non-bypassable RSA floorMIN_RSA_KEY_SIZE can be raised via constantes_V1R1M1.properties, but any value below 2048 bits is rejected with a warning and ignored.
Key-based SSH authentication recommendedRemote mode favours --remote-key; --remote-pass remains available but is documented as a fallback.
Unknown SSH host keys rejected by defaultA first connection to an unlisted host fails without the explicit --trust-new-host option — no silent auto-acceptance.
Protected trial state filesRedundant, verified storage — full detail in the protection overview.
ControlDetalle
Escapado HTML sistemáticoTodo valor derivado del certificado (CN, SAN, subject, issuer) mostrado en los informes HTML pasa por un escapado explícito antes de insertarse — 28 puntos de escapado identificados en el generador de informes.
Enmascaramiento de contraseñasLas contraseñas se muestran como **** en la consola y en los comandos generados.
Validación del fichero de personalización de coloresEl fichero opcional de personalización de colores se verifica antes de ejecutarse.
Licencia Enterprise verificadaproperties/licence.key se verifica — no es un simple flag de confianza.
Códigos de salida estandarizados6 códigos normalizados (0 éxito, 1 error de usuario, 2 licencia, 3 parseo, 127 herramienta ausente, 130 SIGINT) — permiten una integración fiable en pipeline/cron sin ambigüedad sobre la causa del fallo.
Límite RSA no evitableMIN_RSA_KEY_SIZE puede aumentarse vía constantes_V1R1M1.properties, pero cualquier valor por debajo de 2048 bits se rechaza con un warning y se ignora.
Autenticación SSH por clave recomendadaEl modo remoto favorece --remote-key; --remote-pass sigue disponible pero está documentado como alternativa.
Claves de host SSH desconocidas rechazadas por defectoUna primera conexión a un host no registrado falla sin la opción explícita --trust-new-host — sin aceptación automática silenciosa.
Ficheros de estado trial protegidosAlmacenamiento redundante y verificado — detalle completo en el balance de protección.
Dossier d'exploitationOperations folderCarpeta de explotación
Utiliser un dossier d'exploitation dédié avec accès restreint. Séparer les fichiers d'entrée, les rapports, les fichiers temporaires et les logs. La racine des rapports générés correspond au dossier défini par W_FLD_TARGET_ANA_CER / U_FLD_TARGET_ANA_CER dans les properties. Use a dedicated operations folder with restricted access. Keep input files, reports, temporary files and logs separated. The generated-reports root matches the folder defined by W_FLD_TARGET_ANA_CER / U_FLD_TARGET_ANA_CER in the properties. Usar una carpeta de explotación dedicada con acceso restringido. Separar los ficheros de entrada, los informes, los ficheros temporales y los logs. La raíz de los informes generados corresponde a la carpeta definida por W_FLD_TARGET_ANA_CER / U_FLD_TARGET_ANA_CER en las properties.
ZoneRecommandationConfidentialité / sécurité
bin/Script ou binaire compilé.Lecture/exécution pour les opérateurs ; écriture réservée aux administrateurs.
properties/Fichiers de configuration contrôlés.Modification restreinte et changements tracés.
input/Certificats, CSR et keystores à analyser.Éviter les clés privées ou secrets non nécessaires.
reports/Exports HTML/JSON et résumés.À traiter comme documents internes sensibles.
tmp/Fichiers intermédiaires d'extraction.Nettoyage automatique ou purge planifiée.
logs/Traces d'exécution si activées.Aucun mot de passe, passphrase, clé privée ou token.
AreaRecommendationConfidentiality / security
bin/Script or compiled binary.Read/execute for operators; write access for administrators only.
properties/Controlled configuration files.Restricted modification and change tracking.
input/Certificates, CSR and keystores to analyse.Avoid unnecessary private keys or secrets.
reports/HTML/JSON outputs and summaries.Treat as internal sensitive documents.
tmp/Intermediate extraction files.Automatic cleanup or scheduled purge.
logs/Execution traces if enabled.No passwords, passphrases, private keys or tokens.
ZonaRecomendaciónConfidencialidad / seguridad
bin/Script o binario compilado.Lectura/ejecución para operadores; escritura reservada a administradores.
properties/Ficheros de configuración controlados.Modificación restringida y cambios trazados.
input/Certificados, CSR y almacenes a analizar.Evitar claves privadas o secretos innecesarios.
reports/Exportaciones HTML/JSON y resúmenes.Tratar como documentos internos sensibles.
tmp/Ficheros intermedios de extracción.Limpieza automática o purga planificada.
logs/Trazas de ejecución si están activadas.Sin contraseñas, passphrases, claves privadas ni tokens.
Surface d'attaqueAttack surfaceSuperficie de ataque
SurfaceRisqueContrôle en place
Certificats importésDes valeurs non fiables (CN, SAN forgés) peuvent contenir des caractères spéciaux ou du HTML.Échappement systématique avant tout affichage HTML ; contenu jamais exécuté.
Keystores protégésDes mots de passe peuvent être fournis aux outils externes (keytool, runmqakm).Masquage console **** ; pas de log brut du mot de passe.
constantes_V1R1M1.propertiesUne configuration sensible (chemins, seuils) peut être présente en clair.Fichier de configuration non secret par nature (aucun identifiant/mot de passe applicatif) ; accès restreint recommandé au niveau OS.
Outils externesLe comportement Java/MQ peut varier selon la version (ex. JDK 25 et le flag -cacerts).Timeouts, erreurs bloquantes normalisées et capture stderr/stdout.
Remote SFTPRisque si une nouvelle clé hôte est acceptée sans contrôle.--trust-new-host explicite requis ; sinon usage de known_hosts pré-alimenté (onboarding contrôlé).
SurfaceRiskControl in place
Imported certificatesUntrusted values (forged CN, SAN) can contain special characters or HTML.Systematic escaping before any HTML display; content never executed.
Protected keystoresPasswords may be supplied to external tools (keytool, runmqakm).Console masking ****; no raw password logging.
constantes_V1R1M1.propertiesSensitive configuration (paths, thresholds) may be present in cleartext.Not a secret-bearing file by nature (no application credentials); OS-level restricted access recommended.
External toolsJava/MQ behaviour can vary by version (e.g. JDK 25 and the -cacerts flag).Timeouts, standardised blocking errors and stderr/stdout capture.
Remote SFTPRisk if a new host key is accepted casually.Explicit --trust-new-host required; otherwise a pre-populated known_hosts (controlled onboarding).
SuperficieRiesgoControl vigente
Certificados importadosValores no confiables (CN, SAN falsificados) pueden contener caracteres especiales o HTML.Escapado sistemático antes de cualquier visualización HTML; el contenido nunca se ejecuta.
Almacenes protegidosLas contraseñas pueden proporcionarse a herramientas externas (keytool, runmqakm).Enmascaramiento en consola ****; sin registro de contraseña en claro.
constantes_V1R1M1.propertiesPuede haber configuración sensible (rutas, umbrales) en texto claro.No es un fichero de secretos por naturaleza (sin credenciales de aplicación); se recomienda acceso restringido a nivel de SO.
Herramientas externasEl comportamiento Java/MQ puede variar según la versión (ej. JDK 25 y el flag -cacerts).Timeouts, errores bloqueantes normalizados y captura de stderr/stdout.
Remote SFTPRiesgo si se acepta una nueva clave de host sin control.--trust-new-host explícito requerido; en su defecto, known_hosts prepoblado (incorporación controlada).
Recommandations restantesRemaining recommendationsRecomendaciones pendientes
Les recommandations initiales de cet audit (fonction d'échappement HTML unique, modèle de licence vérifié par clé, standardisation des erreurs) ont depuis été implémentées — voir « Contrôles en place » ci-dessus. Restent deux points d'amélioration, de nature qualité de code plutôt que faille de sécurité active : This audit's original recommendations (single HTML-escaping function, key-verified licence model, standardised error handling) have since been implemented — see "Controls in place" above. Two improvement points remain, more a matter of code quality than an active security flaw: Las recomendaciones iniciales de esta auditoría (función única de escapado HTML, modelo de licencia verificado por clave, estandarización de errores) se han implementado desde entonces — ver "Controles vigentes" arriba. Quedan dos puntos de mejora, más una cuestión de calidad de código que un fallo de seguridad activo:
  • 🔸 Centraliser l'échappement HTML — l'échappement est déjà appliqué de façon systématique (28 points), mais via des appels répétés plutôt qu'une fonction unique partagée. Regrouper simplifierait la maintenance sans changer le niveau de protection actuel.
  • 🔸 Étendre les tests aux valeurs limites — ajouter des cas de test avec valeurs certificat ressemblant à du HTML, alias très longs, subjects vides et chaînes de confiance incomplètes, pour figer le comportement de l'échappement et du chaînage dans la durée.
  • 🔸 Centralise HTML escaping — escaping is already applied systematically (28 points), but via repeated calls rather than one shared function. Consolidating would simplify maintenance without changing the current protection level.
  • 🔸 Extend tests to edge-case values — add test cases with HTML-like certificate values, very long aliases, empty subjects and incomplete trust chains, to lock down escaping and chaining behaviour over time.
  • 🔸 Centralizar el escapado HTML — el escapado ya se aplica sistemáticamente (28 puntos), pero mediante llamadas repetidas en lugar de una única función compartida. Consolidarlo simplificaría el mantenimiento sin cambiar el nivel de protección actual.
  • 🔸 Ampliar las pruebas a valores límite — añadir casos de prueba con valores de certificado similares a HTML, alias muy largos, subjects vacíos y cadenas de confianza incompletas, para fijar el comportamiento del escapado y el encadenamiento en el tiempo.
Fichiers référencésReferenced filesFicheros referenciados
FichierRôleConfidentialité / sécurité
bin/chkcert_V1R1M1.pySource principale.Accès contrôlé.
properties/constantes_V1R1M1.propertiesFichier de constantes externe (RSA, dossier de sortie, affichage chaînage).Chemin contrôlé par administrateur ; pas de secret applicatif.
properties/class_bcolors.pyPersonnalisation couleur optionnelle — contrôlée avant chargement.Répertoire de confiance uniquement.
properties/licence.keyLicence Enterprise optionnelle.Accès restreint uniquement.
FileRoleConfidentiality / security
bin/chkcert_V1R1M1.pyMain source.Controlled access.
properties/constantes_V1R1M1.propertiesExternal constants file (RSA, output folder, chaining display).Administrator-controlled path; no application secrets.
properties/class_bcolors.pyOptional colour customisation — checked before loading.Trusted directory only.
properties/licence.keyOptional Enterprise licence.Restricted access only.
FicheroRolConfidencialidad / seguridad
bin/chkcert_V1R1M1.pyFuente principal.Acceso controlado.
properties/constantes_V1R1M1.propertiesFichero de constantes externo (RSA, carpeta de salida, visualización de encadenamiento).Ruta controlada por el administrador; sin secretos de aplicación.
properties/class_bcolors.pyPersonalización de color opcional — verificada antes de cargarse.Solo directorio de confianza.
properties/licence.keyLicencia Enterprise opcional.Solo acceso restringido.