廢話不多說,直接上代碼,實(shí)干興邦,空談?wù)`國!光說不貼源代碼更是耍流氓!
針對舊版本的接口框架,.netformwork4.5以下,加上傳統(tǒng)的ssl機(jī)制即可解決問題。
針對.net core版本的框架,采用ssl證書驗證回調(diào)的方式,其中方案二和方案三同屬于一種解決方式,方案三的更直接明了。文章來源:http://www.zghlxwxcb.cn/news/detail-561375.html
代碼實(shí)測的框架分別為netformwork4.5、.net core3.1,完美解決問題。如有紕漏,歡迎各路大神不吝賜教,多多交流分享哈。文章來源地址http://www.zghlxwxcb.cn/news/detail-561375.html
//ssl證書請求無效的問題解決方案
//********
//方案一,netformwork
//關(guān)于ServicePointManager.SecurityProtocol的設(shè)置是解決問題的關(guān)鍵。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
| SecurityProtocolType.Tls12
| SecurityProtocolType.Tls11
| SecurityProtocolType.Tls;
//上述代碼放在請求之前
HttpWebRequest request = (HttpWebRequest)WebRequest.Create
("https://www.baidu.com");
request.Timeout = 15000;
request.ReadWriteTimeout = 20000;
request.KeepAlive = true;
//********
//方案二
private static bool RemoteCertificateValidate
(object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors error)
{
return true;
}
ServicePointManager.ServerCertificateValidationCallback
+= RemoteCertificateValidate;
//上述代碼放在請求之前
HttpWebRequest request = (HttpWebRequest)WebRequest.Create
("https://www.baidu.com");
request.Timeout = 15000;
request.ReadWriteTimeout = 20000;
request.KeepAlive = true;
//********
//方案三,.net core 3.1
//Trust all certificates
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, certificate, chain, sslPolicyErrors) => true);
//上述代碼放在請求之前
HttpWebRequest request = (HttpWebRequest)WebRequest.Create
("https://www.baidu.com");
request.Timeout = 15000;
request.ReadWriteTimeout = 20000;
request.KeepAlive = true;
到了這里,關(guān)于C# 解決 https請求 ssl證書問題,看我一篇通通解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!