我正在尝试向第三方服务发出标注,但我收到消息“System.CalloutException:DER input,Integer tag”。第三方为我们提供了自签名的客户证书。我看到那里的迹象(例如here和APEX documentation中使用setClientCertificate的'遗留'方法可能是可能的,虽然我意识到这些是SOAP示例,我没有使用。< / p>
我已将证书转换为Base64。我的代码如下。任何帮助将不胜感激。
HttpRequest req = new HttpRequest();
req.setEndpoint('https://myurl');
req.setMethod('POST');
string cert = 'mybase64encodedcert';
string certpass = 'mycertpass';
req.setClientCertificate(cert,certpass);
string thebody = 'somebody';
req.setBody(thebody);
Http http = new Http();
HTTPResponse res = http.send(req);
顺便说一下,我已经阅读了有关客户证书和所有参考资料的APEX文档。我不认为我正在做一些文档中涵盖的内容。
答案 0 :(得分:0)
我犯的错误是我只编码了公钥,并在setClientCertificate中使用了它。我需要做的是对整个pfx文件进行base64编码,然后将其用作cert字符串:
openssl base64 -in input.pfx -out outputfile.txt
我找到了答案here。