2017-07-24 30 views
0

在Azure中,我有一個雲服務和一個嘗試使用第三方api'https://api.txtlocal.com/send/'的webjob允許我們從應用程序發送SMS消息。訪問第三方api的Azure webjob無法建立信任關係數據庫

這一直工作正常,但最近對API的調用已與下面的錯誤而失敗:

System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure

在接觸TextLocal支持,他們說,一些其他客戶報告了這個問題,它是什麼與他們的SSL證書的Thawte證書鏈相關。

提供的解決方案是爲我更新我們服務器中的Thawte根證書。 (在臺式機上自動更新,因此當我在本地運行作業時,它總是有效。)因此,我遠程訪問了Azure雲服務虛擬機,更新了商店中的證書,並且按預期開始工作。

但現在它又突然停止了工作。微軟的支持已經告訴我,這個解決方案無論如何都不會長久,因爲他們每個月都會更新虛擬機,並且我對證書所做的任何更改都可能會被覆蓋。

所以,我的問題是,除了覆蓋SSL檢查,我能做些什麼來確保api的調用始終工作?

在此先感謝您的幫助。

回答

0

覆蓋SSL檢查將不是一個乾淨的解決方案。我建議您在Cloud Service中編寫一個啓動腳本,它將在每次啓動時在Cloud Service VM上安裝Thawte根證書。

因此,您將不得不創建安裝證書的腳本(.cmd/.ps)。您可以將此證書與您的應用綁定或從Thawte下載到雲服務虛擬機上。

完成上述操作後,您可以編寫一個啓動任務,它將調用上述腳本。您將不得不在高架模式下運行此模式才能使其工作。

這裏是如何運行的啓動任務的文檔:How to configure and run startup tasks for a cloud service

下面是一個簡單的啓動任務:

<Startup> 
    <Task commandLine="Startup.cmd" executionContext="limited" taskType="simple"> 
     <Environment> 
      <Variable name="MyVersionNumber" value="1.0.0.0" /> 
     </Environment> 
    </Task> 
</Startup> 

您可以在該文件中,您在啓動過這樣的事情任務:

certmgr.exe -add MyCert.cer -s -r localMachine root 

請參閱本關於如何通過證書部署命令行的更多信息:Deploy a Certificate by Using the Command Prompt

或者,如果您想探索PowerShell,則可以參考文檔Import-Certificate

+0

嗨,謝謝你的回答。然而,這個解決方案要求我在Thawte證書更改時「知道」,下載並重新發布我的服務和webjob。即使我們使用Azure環境作爲PAAS,我不明白爲什麼我們必須做任何事情,因爲這些證書不屬於我們,也不屬於我們的基礎設施。 – Hari

+0

同意。但不幸的是,您的應用程序依賴於該CA證書。在某個時間點,證書可能會添加爲Windows Update的一部分。然而在那之前,這是我能想到的解決方案。 您可能可以向微軟提出支持憑單以獲得一些支持。 –

相關問題