我正在嘗試執行以下操作;Salesforce web服務調用
從salesforce.com我調用http get或post併發布使用httpRequest系統類的json對象。但我得到以下異常(它是https):
java.security.cert.CertificateException: No name matching issue mywebsite.com found
我已經在遠程主機中配置了此網站。有沒有人有一些想法在這裏可能是錯的?
我正在嘗試執行以下操作;Salesforce web服務調用
從salesforce.com我調用http get或post併發布使用httpRequest系統類的json對象。但我得到以下異常(它是https):
java.security.cert.CertificateException: No name matching issue mywebsite.com found
我已經在遠程主機中配置了此網站。有沒有人有一些想法在這裏可能是錯的?
您是否缺少對req.setClientCertificateName的調用?
我有APEX代碼,其中Salesforce呼叫到我網站上的Web服務。我使用客戶端SSL保護它。我的網站(主持人)授權Salesforce.com的客戶端證書(相對於瀏覽器客戶端授權服務器證書的傳統Web SSL)。您可以在Salesforce Admin的證書和密鑰管理下創建一個自簽名證書,然後通過調用req.setClientCertificateName來引用它。這裏是我的生產組織一些代碼:
HttpRequest req = new HttpRequest();
req.setMethod('POST');
req.setHeader('Host', 'www.mywebsite.com');
req.setEndpoint('https://www.mywebsite.com/post.asp');
try {
req.setClientCertificateName('Cert_For_MyWebSite');
} catch (System.CalloutException e) {
// The cert doesn't make it to the sandbox
}
req.setHeader('Connection', 'keep-alive');
req.setHeader('content-type', 'text/plain');
req.setHeader('Content-Length', body.length().format());
req.setBody(body);
Http http = new Http();
HttpResponse res = http.send(req);
System.debug(res.toString());
System.debug('STATUS:' + res.getStatus());
System.debug('STATUS_CODE:' + res.getStatusCode());
在服務器(IIS 7.5)我啓用這個web.config中的自簽名證書:
<configuration>
<system.webServer>
<security>
<access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
<authentication>
<iisClientCertificateMappingAuthentication enabled="true" oneToOneCertificateMappingsEnabled="true">
<oneToOneMappings>
<!-- production salesforce -->
<add enabled="true"
userName="salesforce"
password="[enc:AesProvider:aaa...aaa:enc]"
certificate="MIIEaaa...aaa=" />
</oneToOneMappings>
</iisClientCertificateMappingAuthentication>
</authentication>
</security>
</system.webServer>
</configuration>
在我的其他答案,我想關於Salesforce客戶端證書,因爲我記得當初有頭痛,但是可能錯誤在於您的Web服務器證書。這可能是一個簡單的名稱匹配問題。例如,您的服務器提供給Salesforce的證書已頒發給a.company.com,但您嘗試在b.company.com上使用它。這產生了一個非常類似的java錯誤消息,與之前提到的here和here一樣。當您通過SSL嘗試您的服務時,瀏覽器是否會提供任何錯誤?
如果您認爲Salesforce未驗證您的Web服務器證書,則可以嘗試使用建議的over here for a similar javax.net.ssl.SSLPeerUnverifiedException error的一些技巧。他們甚至指出了Salesforce所信任的CA列表。