前几天开通了一个gpt账号,网上已经介绍非常多的信息了,自己也来试试gpt的强大功能。最近几天刚好在开发SSL证书相关的,来看看获取证书的开始时间和结束时间,就是证书的有效期。
开始
输入如何通过java或者php代码来查询域名SSL证书的开始日期和结束日期,生成如图
没有java环境,没法测试,所以下面我直接使用php来测试,我官网安装的服务器就是php环境,非常方便测试,过去基本没有怎么接触过,能看懂一点吧,就是要的这个效果,O(∩_∩)O,生成的php代码如下:
<?php
$domain = "www.example.com";
$port = 443;
$g = stream_context_create(array("ssl" => array("capture_peer_cert" => true)));
$r = stream_socket_client("ssl://$domain:$port", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $g);
$cont = stream_context_get_params($r);
$cert = openssl_x509_parse($cont["options"]["ssl"]["peer_certificate"]);
$startDate = date(DATE_RFC2822, $cert['validFrom_time_t']);
$endDate = date(DATE_RFC2822, $cert['validTo_time_t']);
echo "Start Date: " . $startDate . "\n";
echo "End Date: " . $endDate . "\n";
?>
域名换成我自己的,直接执行,ok。
日期格式修改下,改成长日期格式
根据提示,date里面的格式修改下,执行
为了以后调用方便,我们把它做成接口,使用json把域名传入,再用json来得到证书的日期信息,输入如下:
生成的代码如下:
<?php
header('Content-Type: application/json');
function getSSLCertificateDates($domain) {
$port = 443;
$timeout = 30;
$context = stream_context_create(["ssl" => ["capture_peer_cert" => true]]);
$client = stream_socket_client("ssl://$domain:$port", $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context);
if ($client) {
$params = stream_context_get_params($client);
$cert = openssl_x509_parse($params["options"]["ssl"]["peer_certificate"]);
$startDate = date('Y-m-d', $cert['validFrom_time_t']);
$endDate = date('Y-m-d', $cert['validTo_time_t']);
return [
"domain" => $domain,
"start_date" => $startDate,
"end_date" => $endDate
];
} else {
return [
"domain" => $domain,
"error" => "Unable to retrieve certificate"
];
}
}
// 获取输入的JSON数据
$input = file_get_contents('php://input');
$data = json_decode($input, true);
if (isset($data['domain'])) {
$domain = $data['domain'];
$result = getSSLCertificateDates($domain);
echo json_encode($result);
} else {
echo json_encode(["error" => "Invalid input"]);
}
?>
只是复制,使用,通过在线post来测试如下:
到这里完美完成,一点都不用知道php都可以,一个实用的例子就这样完成,前后2,3分钟。
为了后面实际调用,我后面还让gpt加上了异常处理,返回错误信息,加了error和errormsg两项。
实际运行效果
加了异常保护,把域名少输入一个w之后,执行效果:
赶紧吧,上面使用的是免费版,还没有使用最新带o的版本。