自动检测https网站ssl证书信息有效性及过期时间的方案

2022-03-16 23:27 栏目:技术开发 查看(5339)

现在https的使用是大势所趋,不同的平台越来越重视https因为https更加安全。比如百度等搜索引擎对https更加友好,小程序和app强制要求https,浏览器会把非https标记为“不安全”。

而不管免费的安全证书还是收费的安全证书,都有一个期限,一般签发一次是一年内的有效期,有的免费安全证书甚至只有几个月的有效期。需要过期前进行续签或者更换ssl证书才能保障服务的正常运行,而一旦https访问不可用,对很多项目都是非常严重的访问故障,就会出现下面这样的情况,这显然是大家都不像看到的。

111

不管是人工续签,还是使用程序自动续签,我们都的知道一个前提信息,那就是ssl证书的有效期。当然我们可以在首次签发或上次续签的时候知道ssl证书的过期时间。

但不可能用脑子记,还是记录下来,都需要人工不停记着这回事。对于这样的事项,相比计算机程序,人工是极其不靠谱的,比如比较忙的时候就很可能把这个事情给忘记了,特别是非专业人士。

于是我们就有一个需求:系统能够自动监测ssl证书过期时间,如果有效期在若干天内(如15天),系统能够自动提醒网站运维人员或者自动续签ssl证书的系统执行相关操作。

这个需求,其实已经被整合到即将上线的“微构服务”系统中的网站巡查模块中关于ssl证书的功能之一。要实现这个功能,就得让程序能够获取到证书的有效时间。下面我们分享一段小程序用于获取ssl安全证书的一些对上面需求有价值的信息:

$context = stream_context_create(
    ['ssl' => [
        'capture_peer_cert' => true,
        'capture_peer_cert_chain' => true,
    ],
]);
$host='www.csweigou.com';
$url='ssl://'.$host.':443';
$client = @stream_socket_client($url, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
$params = stream_context_get_params($client);
$cert = $params['options']['ssl']['peer_certificate'];
$cert_info = openssl_x509_parse($cert);
print_r($cert_info);

通过上述小程序段我们可以获取到ssl证书的有效期validTo_time_t参数值(时间戳),该参数值就是当前网站ssl证书的过期时间。除此之外还包括该ssl证书的其它信息,有了这些信息我们就可以判断当前网站的ssl证书是否有效,距离有效期还有多久,等等。

WX20220316-231859

至此,就可以获取到我们想要的信息,这样我们就可以在过期前及时更换ssl证书,或者对原来的ssl证书进行续期,避免出现因ssl证书问题影响网站的运行。

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:自动检测https网站ssl证书信息有效性及过期时间的方案 - 微构网络
分享: