我正在寻找一种从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本身内进行的方法,即使它稍微复杂一点。
提前致谢。
答案 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