2016-05-19 260 views
1

我有一個Web應用程序對第​​三方API執行客戶端證書身份驗證。該應用程序正在工作,但我想將其移至Azure應用程序服務。覆蓋客戶端證書身份驗證驗證

用於客戶端身份驗證的證書不是從受信任根證書存儲區的CA頒發的。出於顯而易見的原因,Azure不允許向App Services中的受信任根證書存儲區添加證書。

據我所知,如果無法驗證信任鏈,客戶端上的默認行爲是不發送客戶端證書。 .net中有沒有辦法覆蓋這種行爲併發送證書?

我知道ServicePointManager.ServerCertificateValidationCallback允許您重寫檢查服務器證書,但不驗證客戶端證書。

回答

0

據我所知,我認爲你是在正確的軌道,並且使用此代碼:

ServicePointManager 
.ServerCertificateValidationCallback += 
(sender, cert, chain, sslPolicyErrors) => true; 

實際上應該得到你想要的結果?由於服務器將驗證客戶端證書,因此拋出錯誤,將回調設置爲true將覆蓋任何錯誤。我不清楚你是否已經嘗試過這個解決方案,聽起來像你可能已經完成了。

+0

我試過這種方法。它似乎不適用於發送客戶端證書。我遇到的問題是,即使我將一個客戶端證書添加到請求中,它也永遠不會實際發送,而且ServerCertificateValidationCallback也不會被調用。 – Jacob

+1

並非所有這些都否定了使用證書的觀點嗎?如果您只是接受任何證書而不考慮有效性,爲什麼要使用客戶端證書呢? –

+0

我同意@SimonW,但是如果您沒有根CA(我知道有限的情況),那麼它仍然可能有效,或者您使用的是自簽名證書。就我個人而言,我會一直嘗試並正確接受證書。 –

相關問題