在PHP中获取SSL证书的签名

时间:2011-11-20 13:14:35

标签: php openssl

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

我打算使用签名来检查带有openssl_verify()的SSL证书链。我知道可以通过exec('openssl verify -CAfile root.pem certificate.pem')来做,但是我想知道是否有一种在PHP本身内进行的方法,即使它稍微复杂一点。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您可以使用phpseclib, a pure PHP X509 implementation

<?php
include('File/X509.php');

$x509 = new File_X509();
$cert = $x509->loadX509('...');

echo $cert['signature'];

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

答案 1 :(得分:1)

php非常缺乏处理安全证书的原生能力,但是有一些已经编写好并且非常易于使用的库。我找到的最好的一个是xmlseclib.php:xmlseclib on google