Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中从CA获取注册证书_Php_Certificate - Fatal编程技术网

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

如何在PHP中从CA获取注册证书,php,certificate,Php,Certificate,我正在编写一个服务,它应该从移动设备接收以Base64编码的DER格式PKCS#10证书请求,然后返回从CA获得的证书 我正在尝试使用“https://CA-server/certsrv/mscep/mscep.dll?operation=PKIOperation&Message=urlencoded 请求“ 但返回的数据包含空信封。我很可能在做一些非常愚蠢的事情,但不幸的是,我在证书管理方面的知识几乎为零。我一直在尝试谷歌搜索,但是有太多的技术文档,我不知道从哪里开始,什么与我相关,什么与我无

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

我正在尝试使用“https://CA-server/certsrv/mscep/mscep.dll?operation=PKIOperation&Message=urlencoded 请求“

但返回的数据包含空信封。我很可能在做一些非常愚蠢的事情,但不幸的是,我在证书管理方面的知识几乎为零。我一直在尝试谷歌搜索,但是有太多的技术文档,我不知道从哪里开始,什么与我相关,什么与我无关

非常感谢大家的帮助


编辑:根据一个文档,我应该将我的PKCS10请求包装到PKCS7中。根据Microsoft的要求,PKCS10应该可以,PKCS7仅用于证书续订。相信谁?

最后,我们放弃了mscep.dll方法,使用curl直接向…certsrv/certfnsh.asp页面发送带有所需参数的帖子。然后我们解析返回的HTML并获得证书下载的链接


这不是一个好的解决方案,但对我们有效

空信封是什么意思?空容器-522字节的二进制数据。它也可能是错误配置的NDE。从我得到的事件日志中:“网络设备注册服务无法从客户端的PKCS7消息(0x8009310b)检索所需信息,例如事务ID、消息类型或签名证书。满足ASN1错误标记值。”我为这个问题添加了赏金。我想获得一个PHP示例,如何将PKCS#10请求包装成CA服务器可以接受的PKCS#7。或者如果可以配置CA服务器以接受直接PKCS#10请求,那么您使用的是哪台CA服务器?
     $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);