我需要获取域名的SSL证书详细信息(如失效日期,颁发者)。因此,我从PHP文件中运行了以下命令。
ssl.php
$cdates= shell_exec('openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates');
$issuer= shell_exec('openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -issuer');
echo "$cdates";
echo "$issuer";
获取以下输出
notBefore=Dec 10 11:54:23 2014 GMT notAfter=Mar 10 00:00:00 2015 GMT
issuer= /C=US/O=Google Inc/CN=Google Internet Authority G2
现在我的问题是如何从变量中获取参数?
例如,我需要从$issuer
变量中获取 CN 值(Google Internet Authority G2)。
那么是否存在任何命令/功能,或者我需要使用正则表达式从字符串中提取 CN ?
我们非常感谢任何建议。
答案 0 :(得分:1)
这似乎是一种更清洁的方法(使用phpseclib):
<?php
include('File/X509.php');
$x509 = new File_X509();
$cert = $x509->loadX509(shell_exec('openssl s_client -connect example.com:443 2>/dev/null'));
print_r($x509->getIssuerDNProp('CN'));
?>