签署文件,我需要签署关于PHP的PDF文档,我使用TCPDF库做使用DER格式化键对PHP
问题是我的.CER我。重点文件在DER格式和openssl_pkcs7_sign()功能可如果是这种格式加载私钥
如果我用我的终端上OpenSSL的命令,我的钥匙由二进制DER格式转换为一个SCII一切正常,但我不想使用exec函数通过PHP调用系统函数。
经过一点研究,我发现这个问题: Load a .key file from DER format to PEM with PHP 对答案建议打开文件,获取内容并使用转换。
function der2pem($der_data, $type='CERTIFICATE') {
$pem = chunk_split(base64_encode($der_data), 64, "\n");
$pem = "-----BEGIN ".$type."-----\n".$pem."-----END ".$type."-----\n";
return $pem;
}
但是当我使用这个功能我的数据转换的结果是通过在控制台上OpenSSL的和功能openssl_pkcs7_sign()生成的文件不同再次抛出我的错误
UPDATE
这是我的PHP代码转换我的文件:
<?php
$myKey = 'p-key.key';
$private_key = file_get_contents($myKey);
echo der2pem($private_key,'PRIVATE KEY');
file_put_contents('p-key.key.pem', der2pem($private_key,'PRIVATE KEY'));
function der2pem($der_data, $type = 'CERTIFICATE')
{
$pem = chunk_split(base64_encode($der_data), 64, "\n");
$pem = "-----BEGIN ".$type."-----\n".$pem."-----END ".$type."-----\n";
return $pem;
}
这是我OpenSSL的命令:
openssl pkcs8 -in p-key.key -out p-key.key.pem -inform DER -outform PEM
对此有一个解释?
如何正确的方法来做到这一点?
我应该使用exec来解决我的问题吗?
感谢很多提前
让我知道如果你需要更多的信息
嗨,没有更多的信息,这里很难评论 - 当你说这是不同的 - 你在哪里看到这种差异..?数据全部在一行上吗?数据是否显示正确的字符?您是否在使用私钥或CER和KEY时遇到问题?在调用der2pem函数时你在做什么?写它到屏幕?写入文件?把结果推到一些其他变量? – Damien
嗨,当我转换我的私钥我得到了一个有效的文件来执行该标志,但是当我使用PHP函数转储文件上的结果我得到了一个不同的字符串,类似的开始,但不同 我要去测试功能转换我的CER文件 – Mirdrack
你能分享你正在使用的例程吗? – Damien