[英]vb Could not establish secure channel for SSL/TLS
我正在做一個我沒有寫,已經繼承的項目,並且有一個我不確定如何解決的問題。 我的背景不是.NET,所以請原諒聽起來不正確的內容,因為我可能不知道正確的術語是什么。
我們使用Visual Studio 2008編譯在Windows CE 6.0上運行的項目。 我們正在使用Compact Framework v2.0。 該軟件在聯網(WIFI)連接的工業環境中的嵌入式處理器上運行。 主UI用VB編寫,所有支持的DLL是使用C#編寫的。
到目前為止,我們只需要連接到GET請求的http(非安全)網址即可。 為了安全起見,我們現在需要將這些地址切換到https(安全)。
HttpWebRequest是從VB構建/提交的。 當我向代碼提供https地址時,出現主題中的“無法為SSL / TLS建立安全通道”錯誤。
這是該請求的代碼:
Dim myuri As System.Uri = New System.Uri(sUrl)
Dim myHttpwebresponse As HttpWebResponse = Nothing
Dim myhttpwebrequest As HttpWebRequest = CType(WebRequest.Create(myuri), HttpWebRequest)
myhttpwebrequest.KeepAlive = False
myhttpwebrequest.Proxy.Credentials = CredentialCache.DefaultCredentials
myhttpwebrequest.ContentType = "text/xml"
myhttpwebrequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
myhttpwebrequest.AllowAutoRedirect = False
myhttpwebrequest.Timeout = 150000
Dim mycred As NetworkCredential = New NetworkCredential(username, password)
Dim myCredentialCache As CredentialCache = New CredentialCache()
myCredentialCache.Add(myuri, "Basic", mycred)
myhttpwebrequest.Credentials = myCredentialCache
myhttpwebrequest.Method = "GET"
myhttpwebrequest.ProtocolVersion = HttpVersion.Version10
ServicePointManager.CertificatePolicy = New AcceptServerNameMismatch
myHttpwebresponse = CType(myhttpwebrequest.GetResponse(), HttpWebResponse)
在過去的一天中,我已經做了大量的閱讀工作,這表明CertificatePolicy是我可以覆蓋ICertificatePolicy類以實質上驗證所有SSL請求的地方。 絕對不安全,也不理想,但是我不確定要處理這些請求的另一種方法。
我的班級是:
Public Class MyCertificatePolicy
Implements ICertificatePolicy
Public Shared DefaultValidate As Boolean = True
Public Sub trustedCertificatePolicy()
End Sub
Public Function CheckValidationResult(ByVal srvPoint As ServicePoint, _
ByVal cert As X509Certificate, ByVal request As WebRequest, ByVal problem As Integer) _
As Boolean Implements ICertificatePolicy.CheckValidationResult
Return True
End Function
End Class
不幸的是,當響應返回時,它永遠不會調用CheckValidationResult()。 因此,沒有驗證和錯誤。
所以我的問題...
根據我已閱讀的所有內容執行此操作的“正確”方法是使用ServerCertificateValidationCallback。 不幸的是,我們正在使用的Compact Framework版本(也許是全部?)未包括在內。 我缺少某些東西會導致該函數無法調用嗎?
同樣,根據我的閱讀,我相信我們運行的框架不支持TLS v1.1或v1.2。 當前哪些服務器正在運行。 VB中有沒有辦法解決這個問題?
還有其他可以使用的Request方法嗎?
對於從這里出發的任何幫助或指導,我們將不勝感激!
您需要在設備上安裝與服務器上的SSL證書匹配的受信任的根證書。
或更改服務器上的證書以匹配設備上的“受信任的根”之一。 默認情況下,設備附帶的信任CA數量很少,而桌面瀏覽器幾乎包含世界上每個CA。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.