(self, domain)
| 12440 | return info |
| 12441 | |
| 12442 | def _scan_tls_cert(self, domain): |
| 12443 | out = {} |
| 12444 | ctx = ssl.create_default_context() |
| 12445 | try: |
| 12446 | with socket.create_connection((domain, 443), timeout=6) as raw_sock: |
| 12447 | ssock = ctx.wrap_socket(raw_sock, server_hostname=domain) |
| 12448 | with ssock: |
| 12449 | cert = ssock.getpeercert() |
| 12450 | if not cert: |
| 12451 | out["TLS"] = "Certificato non disponibile" |
| 12452 | return out |
| 12453 | out["TLS"] = "Certificato ottenuto" |
| 12454 | out["TLS Issuer"] = ", ".join([f"{k}={v}" for k, v in cert.get("issuer", [])]) if cert.get("issuer") else "N/D" |
| 12455 | out["TLS Soggetto"] = ", ".join([f"{k}={v}" for k, v in cert.get("subject", [])]) if cert.get("subject") else "N/D" |
| 12456 | if cert.get("notBefore"): |
| 12457 | out["TLS valid from"] = str(cert.get("notBefore")) |
| 12458 | if cert.get("notAfter"): |
| 12459 | out["TLS valid to"] = str(cert.get("notAfter")) |
| 12460 | alt = cert.get("subjectAltName") or [] |
| 12461 | if alt: |
| 12462 | out["TLS SAN"] = ", ".join([v[1] for v in alt if len(v) > 1][:25]) |
| 12463 | if cert.get("version"): |
| 12464 | out["TLS Version"] = str(cert.get("version")) |
| 12465 | if cert.get("serialNumber"): |
| 12466 | out["TLS Serial"] = str(cert.get("serialNumber")) |
| 12467 | return out |
| 12468 | except Exception as e: |
| 12469 | out["TLS"] = f"Err: {e}" |
| 12470 | return out |
| 12471 | |
| 12472 | |
| 12473 |
no outgoing calls
no test coverage detected