在PHP中获取SSL证书签名


Getting Signature of SSL Certificate in PHP

我正在寻找从base64_encoded证书中获得证书签名的解决方案。根据我的理解(http://en.wikipedia.org/wiki/Public_key_certificate#Contents_of_a_typical_digital_certificate),证书的签名包含在证书本身中。但是,我还没有找到检索该签名的方法。

我打算使用openssl_verify()使用签名检查SSL证书链。我知道这是可能的通过exec('openssl验证-文件根。pem证书。pem’),但我想知道是否有一种方法可以在PHP内部完成它,即使它稍微复杂一些。

你可以使用phpseclib,一个纯PHP X509实现:

<?php
include('File/X509.php');
$x509 = new File_X509();
$cert = $x509->loadX509('...');
echo $cert['signature'];

请注意,该信号将是base64编码的。根据您需要的内容,您可能想要对其进行base64_decode

php难以置信地缺乏处理安全证书的原生能力,但是已经编写了一些非常易于使用的库。我发现最好的一个是xmlseclib.php: xmlseclib on google