2013-01-24 43 views
4

我正在編寫一個服務,該服務應該從移動設備接收基於BASE64編碼的DER格式PKCS#10證書請求,然後返回從CA獲得的證書。如何在PHP中獲取來自CA的註冊證書

我試圖用 「HTTPS://CA-server/certsrv/mscep/mscep.dll操作= PKIOperation &消息= urlencoded的要求」

 $ca_link_device="https://..../certsrv/mscep/mscep.dll"; 
    $URL=$ca_link_device."?operation=PKIOperation&Message=".urlencode($BinarySecurityToken)."="; 
    $ch3 = curl_init(); 
    curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch3, CURLOPT_URL, $URL); 
    curl_setopt($ch3, CURLOPT_HEADER, 0); 
    $cert = curl_exec($ch3); 

但數據返回一個包含空信封。我很可能在做一些非常愚蠢的事情,但不幸的是,我在證書管理方面的知識接近於零。我一直在嘗試谷歌,但周圍有這麼多的技術文檔,我不知道從哪裏開始,什麼與我有關,什麼不是。

所有幫助非常感謝。

編輯:根據一份文件,我應該將PKCS10請求包裝到PKCS7中。根據Microsoft PKCS10應該沒問題,PKCS7僅用於證書更新。誰相信?

+0

空信封是什麼意思? –

+0

空容器 - 522字節的二進制數據。它也可能是配置錯誤的NDES。 – Riho

+0

我從事件日誌中得到:「網絡設備註冊服務無法從客戶端的PKCS7消息(0x8009310b)中檢索所需的信息,例如事務ID,消息類型或簽名證書,符合ASN1錯誤標記值。 – Riho

回答

1

最後我們放棄了mscep.dll方法,並使用curl直接發送帶有所需參數的POST到... certsrv/certfnsh.asp頁面。然後我們解析返回的HTML並獲得證書下載的鏈接。

不是一個很好的解決方案,但爲我們工作。