PHP - 如何从shell_exec输出中获取参数

时间:2015-01-07 12:49:14

标签: php ssl shell-exec

我需要获取域名的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

我们非常感谢任何建议。

1 个答案:

答案 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'));
?>