如何在 PHP 中从 CA 获取注册证书


How to obtain enrollment certificate from CA in PHP

>我正在编写一个服务,该服务应该从移动设备接收 Base64 编码的 DER 格式 PKCS#10 证书请求,然后返回从 CA 获得的证书。

我正在尝试使用"https://CA-server/certsrv/mscep/mscep.dll?operation=PKIOperation&Message=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仅用于证书续订。相信谁?

最后我们只是放弃了 mscep.dll 方法并使用 curl 直接将带有所需参数的 POST 发送到......certsrv/certfnsh.asp page.然后我们解析返回的 HTML 并获取证书下载链接。

不是一个很好的解决方案,但对我们有用。