一般遇到這種情況的是在win7或以下的操作系統上,因為操作系統本身不支持大于1024的加密密鑰。
解決步驟:
一,在程序里寫入如下代碼,在獲取網站證書的時候最好使用谷歌瀏覽器,操作如下圖1、圖2、圖3進行保存到桌面,然后復制到程序運行的根目錄。
(圖1)
(圖2)
(圖3)
二,實現代碼如下,我們通過X509Certificate這個類來實現加載證書。
1. //設置支持的ssl協議版本,這里我們都勾選上常用的幾個
2. ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | (SecurityProtocolType)3072;
3. //請求的時候始終回調允許請求
4. ServicePointManager.ServerCertificateValidationCallback +=
5. CheckValidationResult;
6. //開始載入網站的證書
7. string filePath = System.IO.Directory.GetCurrentDirectory() + "/appst.cer";
8. X509Certificate cert = new X509Certificate(filePath);
9. //將證書添加客戶端證書集合
10.request?.ClientCertificates.Add(cert);
三,關鍵的一步,其實如果你的電腦是win10以上系統,那么以上步驟基本就可以正常使用了,但是如果是win7系統,那么就得看以下操作:
打開cmd - 運行如下代碼,其實我看了網上的說是修改成512和2就可以了,但是修改后無效,我看了下網站的密鑰長度超過512了,所以特修改如下就正常操作了。
certutil -setreg chain\minRSAPubKeyBitLength 2256
//允許的最小 RSA 密鑰長度為 2256
certutil -setreg chain\EnableWeakSignatureFlags 512
該文章在 2023/5/23 9:38:47 編輯過