2012-06-04 42 views
0

我正在嘗試執行以下操作;Salesforce web服務調用

從salesforce.com我調用http get或post併發布使用httpRequest系統類的json對象。但我得到以下異常(它是https):

java.security.cert.CertificateException: No name matching issue mywebsite.com found 

我已經在遠程主機中配置了此網站。有沒有人有一些想法在這裏可能是錯的?

回答

1

您是否缺少對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> 
0

在我的其他答案,我想關於Salesforce客戶端證書,因爲我記得當初有頭痛,但是可能錯誤在於您的Web服務器證書。這可能是一個簡單的名稱匹配問題。例如,您的服務器提供給Salesforce的證書已頒發給a.company.com,但您嘗試在b.company.com上使用它。這產生了一個非常類似的java錯誤消息,與之前提到的herehere一樣。當您通過SSL嘗試您的服務時,瀏覽器是否會提供任何錯誤?

如果您認爲Salesforce未驗證您的Web服務器證書,則可以嘗試使用建議的over here for a similar javax.net.ssl.SSLPeerUnverifiedException error的一些技巧。他們甚至指出了Salesforce所信任的CA列表。