check-certificat.com / Rapport techniqueTechnical ReportInforme técnico
chk_url_ips_V1R1_rapport_technique.html MAJ 21.07.2026Updated 2026-07-21Act. 21.07.2026

🔧 chk_url_ips V1R1 — Rapport technique🔧 chk_url_ips V1R1 — Rapport technique🔧 chk_url_ips V1R1 — Informe técnico

JokerSoft 2026 · chk_url_ips_V1R1.py · Python 3.8+

Métriques clés

Key metrics

Métricas clave

IndicateurValeur
Lignes de code~2 800
Fonctions principales45+
Formats d'hôteshostname, IP, plage IP, CIDR
SortiesHTML · JSON cert · JSON RDAP · CSV
PlateformesWindows · Linux · macOS
Dépendancescryptography · requests · ipwhois · tldextract · paramiko (optionnel)
MetricValue
Lines of code~2 800
Main functions45+
Host formatshostname, IP, IP range, CIDR
OutputsHTML · JSON cert · JSON RDAP · CSV
PlatformsWindows · Linux · macOS
Dependenciescryptography · requests · ipwhois · tldextract · paramiko (optional)
IndicadorValor
Líneas de código~2 800
Funciones principales45+
Formatos de hosthostname, IP, rango de IP, CIDR
SalidasHTML · JSON cert · JSON RDAP · CSV
PlataformasWindows · Linux · macOS
Dependenciascryptography · requests · ipwhois · tldextract · paramiko (opcional)

Architecture — flux d'exécution

Architecture — execution flow

Arquitectura — flujo de ejecución

argparse analyze_hosts() expand_ip_range() main(host, port)
                                               ↓
fetch_cert_chain() openssl s_client save_certificates()
                                               ↓
process_extensions() + resolve_domain_ips() dns_ips_list_v4
                                               ↓
build_dns_resolution_table(level) dns_resolution_table
build_analysis_summary() status + renewal commands
get_rdap_json_from_ip() + parse_rdap_network() rdap_network
                                               ↓
generate_html_report() · generate_json_report() · generate_csv_report()

argparse analyze_hosts() expand_ip_range() main(host, port)
                                               ↓
fetch_cert_chain() openssl s_client save_certificates()
process_extensions() + resolve_domain_ips() dns_ips_list_v4
build_dns_resolution_table(level) dns_resolution_table
build_analysis_summary() status + renewal commands
get_rdap_json_from_ip() + parse_rdap_network() rdap_network
generate_html_report() · generate_json_report() · generate_csv_report()

argparse analyze_hosts() expand_ip_range() main(host, port)

fetch_cert_chain() openssl s_client save_certificates()
process_extensions() + resolve_domain_ips() dns_ips_list_v4
build_dns_resolution_table(level) dns_resolution_table
build_analysis_summary() status + renewal commands
get_rdap_json_from_ip() + parse_rdap_network() rdap_network
generate_html_report() · generate_json_report() · generate_csv_report()

Fonctions principales

Main functions

Funciones principales

FonctionRôleRetour
analyze_hosts()Point d'entrée principal — orchestration complèteNone
main(host, port)Analyse un host:port — boucle sur les IPs résolueslist[str] DNS clean
fetch_cert_chain()Récupère la chaîne PEM via openssl s_clientCertChainResult
save_certificates()Parse les PEM → objets x509, extrait métadonnéesCertChainResult
process_extensions()Extrait les SANs, résout les IPs (level 1)list[str]
build_dns_resolution_table()Construit table dns_to_ips + ip_to_dns (level 0/1/2)dict
build_analysis_summary()Évalue expiration, algo, taille clé → commandes renouvellementdict
get_rdap_json_from_ip()Interroge ARIN RDAP pour une IPdict
parse_rdap_network()Extrait les champs utiles du JSON RDAP brutdict
generate_html_report()Produit le rapport HTML dark theme autonomeNone (fichier)
resolve_domain_ips()Résolution DNS avec @lru_cachetuple
expand_ip_range()Expanse une plage IP en liste d'IPstuple(int, list)
verify_chain()Vérifie les liens issuer→subject de la chaîneNone
FunctionRoleReturn
analyze_hosts()Main entry point — full orchestrationNone
main(host, port)Analyses one host:port — loops over resolved IPslist[str] clean DNS
fetch_cert_chain()Retrieves PEM chain via openssl s_clientCertChainResult
save_certificates()Parses PEM → x509 objects, extracts metadataCertChainResult
process_extensions()Extracts SANs, resolves IPs (level 1)list[str]
build_dns_resolution_table()Builds dns_to_ips + ip_to_dns tables (level 0/1/2)dict
build_analysis_summary()Evaluates expiry, algo, key size → renewal commandsdict
get_rdap_json_from_ip()Queries ARIN RDAP for an IPdict
parse_rdap_network()Extracts useful fields from raw RDAP JSONdict
generate_html_report()Produces standalone dark-theme HTML reportNone (file)
resolve_domain_ips()DNS resolution with @lru_cachetuple
expand_ip_range()Expands an IP range to a list of IPstuple(int, list)
verify_chain()Verifies issuer→subject links in the chainNone
FunciónRolRetorno
analyze_hosts()Punto de entrada principal — orquestación completaNone
main(host, port)Analiza un host:port — recorre las IPs resueltaslist[str] DNS limpio
fetch_cert_chain()Obtiene la cadena PEM vía openssl s_clientCertChainResult
save_certificates()Parsea los PEM → objetos x509, extrae metadatosCertChainResult
process_extensions()Extrae los SANs, resuelve las IPs (level 1)list[str]
build_dns_resolution_table()Construye tabla dns_to_ips + ip_to_dns (level 0/1/2)dict
build_analysis_summary()Evalúa expiración, algoritmo, tamaño de clave → comandos de renovacióndict
get_rdap_json_from_ip()Consulta ARIN RDAP para una IPdict
parse_rdap_network()Extrae los campos útiles del JSON RDAP brutodict
generate_html_report()Produce el informe HTML en tema oscuro autónomoNone (archivo)
resolve_domain_ips()Resolución DNS con @lru_cachetuple
expand_ip_range()Expande un rango de IP en una lista de IPstuple(int, list)
verify_chain()Verifica los enlaces issuer→subject de la cadenaNone

Structure des rapports HTML

HTML report structure

Estructura de los informes HTML

Chaque rapport HTML généré contient les sections suivantes dans l'ordre :

  1. Analysis Summary — banner vert/amber/rouge + commandes renouvellement si anomalie
  2. Summary bar — temps restant, nombre de certificats, IP, organisation
  3. Network Info (RDAP) — organisation, handle, CIDR, country, range
  4. Certificats — une card par certificat (subject, issuer, dates, empreintes, extensions SANs avec IPs)
  5. DNS Resolution Table — panel 1 : DNS→IPv4 · panel 2 : IP unique→noms (cert/PTR)

Each generated HTML report contains the following sections in order:

  1. Analysis Summary — green/amber/red banner + renewal commands if anomaly detected
  2. Summary bar — time remaining, certificate count, IP, organisation
  3. Network Info (RDAP) — organisation, handle, CIDR, country, range
  4. Certificates — one card per certificate (subject, issuer, dates, fingerprints, SAN extensions with IPs)
  5. DNS Resolution Table — panel 1: DNS→IPv4 · panel 2: unique IPs→names (cert/PTR)

Cada informe HTML generado contiene las siguientes secciones en orden:

  1. Analysis Summary — banner verde/ámbar/rojo + comandos de renovación si se detecta una anomalía
  2. Summary bar — tiempo restante, número de certificados, IP, organización
  3. Network Info (RDAP) — organización, handle, CIDR, país, rango
  4. Certificados — una tarjeta por certificado (subject, issuer, fechas, huellas, extensiones SAN con IPs)
  5. DNS Resolution Table — panel 1: DNS→IPv4 · panel 2: IPs únicas→nombres (cert/PTR)

Répertoire de sortie

Output directory

Directorio de salida

Le répertoire racine _SCRIPT_ROOT est dérivé du nom du script sans extension, créé dans le répertoire courant au moment du lancement (CWD). Chaque outil garde ainsi son propre arbre de sortie.

CWD/chk_url_ips_V1R1/{html,json,csv,certificate,tmp,log}/CUSTOMER/YYYYMMDD/

The root directory _SCRIPT_ROOT is derived from the script name without extension, created in the current working directory at launch time (CWD). Each tool thus keeps its own output tree.

CWD/chk_url_ips_V1R1/{html,json,csv,certificate,tmp,log}/CUSTOMER/YYYYMMDD/

El directorio raíz _SCRIPT_ROOT se deriva del nombre del script sin extensión, creado en el directorio de trabajo actual en el momento del lanzamiento (CWD). Cada herramienta mantiene así su propio árbol de salida.

CWD/chk_url_ips_V1R1/{html,json,csv,certificate,tmp,log}/CUSTOMER/YYYYMMDD/

Compatibilité Windows

Windows compatibility

Compatibilidad con Windows

Toutes les créations de répertoires utilisent Path.mkdir(parents=True, exist_ok=True). Les chemins sont construits via pathlib.Path. L'encodage console est géré avec errors='replace'. Compatible Windows 10/11 avec Python 3.8+.

All directory creation uses Path.mkdir(parents=True, exist_ok=True). Paths are built via pathlib.Path. Console encoding is handled with errors='replace'. Compatible with Windows 10/11 and Python 3.8+.

Toda creación de directorios usa Path.mkdir(parents=True, exist_ok=True). Las rutas se construyen vía pathlib.Path. La codificación de consola se gestiona con errors='replace'. Compatible con Windows 10/11 y Python 3.8+.