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