[ 'capture_peer_cert' => true, 'verify_peer' => false, // We're only capturing the cert details; not verifying if it's valid 'verify_peer_name' => false, ], ]); $client = @stream_socket_client( "ssl://{$domain}:{$port}", $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context ); if (!$client) { return false; } $contextParams = stream_context_get_params($client); if (!isset($contextParams['options']['ssl']['peer_certificate'])) { return false; } $cert = $contextParams['options']['ssl']['peer_certificate']; $certInfo = openssl_x509_parse($cert); if (!isset($certInfo['validTo_time_t'])) { return false; } // Return the expiration date in a human-readable format, e.g., "2023-09-20" return date('Y-m-d', $certInfo['validTo_time_t']); } /* * ############################################################################################################### * UPDATE CERTIFICATE EXPIRY DATE * ############################################################################################################### */ $sql_certificates = mysqli_query($mysqli, "SELECT certificate_id, certificate_domain FROM certificates WHERE certificate_archived_at IS NULL"); while ($row = mysqli_fetch_array($sql_certificates)) { $certificate_id = intval($row['certificate_id']); $certificate_domain = santizeInput($row['certificate_domain']); $expire_date = getCertificateExpiryDate($certificate_domain); // Update the Certificate Expiry date mysqli_query($mysqli, "UPDATE certificates SET certificate_expire = '$expire_date' WHERE certificate_id = $certificate_id"); }