扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
现在https的使用是大势所趋,不同的平台越来越重视https因为https更加安全。比如百度等搜索引擎对https更加友好,小程序和app强制要求https,浏览器会把非https标记为“不安全”。
而不管免费的安全证书还是收费的安全证书,都有一个期限,一般签发一次是一年内的有效期,有的免费安全证书甚至只有几个月的有效期。需要过期前进行续签或者更换ssl证书才能保障服务的正常运行,而一旦https访问不可用,对很多项目都是非常严重的访问故障,就会出现下面这样的情况,这显然是大家都不像看到的。
不管是人工续签,还是使用程序自动续签,我们都的知道一个前提信息,那就是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证书是否有效,距离有效期还有多久,等等。
至此,就可以获取到我们想要的信息,这样我们就可以在过期前及时更换ssl证书,或者对原来的ssl证书进行续期,避免出现因ssl证书问题影响网站的运行。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流