2013-06-15 3 views
0

Я пытаюсь сделать выносок сторонней службе, но я получаю сообщение «System.CalloutException: DER input, Integer tag». Третья сторона предоставила нам самозаверяющий клиентский сертификат для использования. Я вижу признаки там (например, here и в APEX documentation, что это может быть возможно, используя метод «наследство» с setClientCertificate, хотя я понимаю, эти примеры SOAP, которые я не использую.Force.com System.CalloutException: вход DER, ошибка тега Integer

Я преобразовал сертификат в 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

Ошибка, которую я делал, заключалась в том, что я закодировал только открытый ключ, и использовал это в setClientCertificate. Что мне нужно сделать, чтобы base64 закодировать весь файл PFX, а затем использовать его в качестве строки CERT:

OpenSSL base64 -in input.pfx отъезда OutputFile.txt

Я нашел ответ here.