check-certificat.com / Rapport techniqueTechnical Report Rapport fonctionnelFunctional report

🔧 chk_url_ips V1R1 — Rapport technique🔧 chk_url_ips V1R1 — Rapport technique

JokerSoft 2026 · chk_url_ips_V1R1.py · Python 3.8+

Métriques clés

Key metrics

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)

Architecture — flux d'exécution

Architecture — execution flow

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

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

Structure des rapports HTML

HTML report structure

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)

Répertoire de sortie

Output directory

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/

Compatibilité Windows

Windows compatibility

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+.