php单文件查询SSL到期时间
建立domains.txt文件保存网址,每行一个网址
<?php
// Load domain list from domains.txt
$domains = explode("\n", file_get_contents('domains.txt'));
$domains = array_filter($domains, function($domain) { return $domain !== ''; });
// Get certificate info
function getCertificate($domain) {
$url = "https://$domain";
$orignal_parse = parse_url($url, PHP_URL_HOST);
$get = stream_context_create(array("ssl" => array("capture_peer_cert" => TRUE)));
$read = stream_socket_client("ssl://".$orignal_parse.":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $get);
$cert = stream_context_get_params($read);
$certinfo = openssl_x509_parse($cert['options']['ssl']['peer_certificate']);
return $certinfo;
}
// Process ceriticate info of each domain
$certs = [];
foreach ($domains as $domain) {
$rawCert = getCertificate($domain);
$cert = [];
$cert['domain'] = $domain;
$cert['validTo'] = gmdate("Y-m-d\ ", $rawCert['validTo_time_t']);
$cert['validToUnix'] = $rawCert['validTo_time_t'];
$cert['issuer'] = $rawCert['issuer']['CN'];
$cert['days'] = (intval($cert['validToUnix']) - time())/60/60/24;
$certs[] = $cert;
}
// Sort by expiring time
$validTo = array();
foreach ($certs as $key => $row) {
$validTo[$key] = $row['validToUnix'];
}
array_multisort($validTo, SORT_ASC, $certs);
// 标题
echo "<title>hxser 证书检查</title>";
// Generate output
$bar = str_repeat('=', 80);
$format = "$bar\n %s (%d 天)\n 到期时间: %s 提供商: %s\n$bar\n\n";
$output = '';
foreach ($certs as $cert) {
$output .= sprintf($format, $cert['domain'], $cert['days'], $cert['validTo'], $cert['issuer']);
}
printf("<pre>\n%s\n</pre>", $output);
?>
版权声明:
作者:隔壁小色
链接:https://www.fanooo.com/archives/1614
文章版权归作者所有,未经允许请勿转载。
THE END