簽署文件,我需要簽署關於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