前几天开通了一个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的版本。