环境支持检测
在检测SSL证书前,需确认PHP环境满足以下条件:
- 已启用OpenSSL扩展(通过
extension_loaded('openssl')
验证) - 服务器支持HTTPS协议(检查$_SERVER[‘HTTPS’]或443端口)
- 网络权限允许建立SSL连接
证书信息获取
通过stream_socket_client建立SSL连接后,使用openssl_x509_parse函数解析证书信息:
function get_cert_info($domain) {
$context = stream_context_create(['ssl' => [
'capture_peer_cert' => true
]]);
$client = stream_socket_client("ssl://$domain:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);
$cert = stream_context_get_params($client)['options']['ssl']['peer_certificate'];
return openssl_x509_parse($cert);
}
该函数返回包含证书颁发者、有效期等信息的数组。
有效性验证方法
验证证书有效性需关注三个核心要素:
- 有效期验证:检查当前时间是否在
validFrom_time_t
和validTo_time_t
之间 - 域名匹配:验证证书中的
subjectAltName
或CN
字段是否包含目标域名 - 证书链完整性:通过
openssl_verify
验证证书签名链
完整示例代码
整合验证逻辑的完整实现示例:
function validate_ssl_cert($domain) {
$cert = get_cert_info($domain);
$now = time;
if ($now $cert['validTo_time_t']) {
return "证书已过期";
if (!str_contains($cert['extensions']['subjectAltName'], $domain)) {
return "域名不匹配";
return "证书有效";
}
通过组合使用PHP流函数和OpenSSL扩展,开发者可实现自动化的SSL证书有效性检测。建议定期执行证书有效期检查(推荐每月1次),并结合日志监控构建完整的证书管理系统。
本文由阿里云优惠网发布。发布者:编辑员。禁止采集与转载行为,违者必究。出处:https://aliyunyh.com/566661.html
其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。