.net core 調用數字證書 使用X509Certificate2


 .NET下面的 .netfromwork使用和asp.net core下使用方式不一樣

配置文件中代碼:

 public const string API_URL = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";
///
<summary> /// 本地或者服務器的證書位置 /// </summary> public const string CertPath = @"D:\apiclient_cert.p12"; /// <summary> /// 本地或者服務器的證書密碼 /// </summary> public const string CApassword = "9999999";
Build_Content()
  這個主要是傳遞的參數封裝值
 public async Task<bool> Send_Transfer()
        {
            //HttpClient請求,在handler里添加X509Certificate2 證書,數據data是byte[] 類型,所以需要使用ByteArrayContent傳入
            var handler = new HttpClientHandler();
            handler.ClientCertificateOptions = ClientCertificateOption.Manual;
            handler.SslProtocols = SslProtocols.Tls12;
            //獲取證書路徑
            //商戶私鑰證書,用於對請求報文進行簽名
            try
            {
                handler.ClientCertificates.Add(new X509Certificate2(WeixinPay.CertPath, WeixinPay.CApassword, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet));
            }
            catch (Exception e)
            {
                _logger.LogError(e.Message);
            }
            handler.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls;
            handler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => true;
            //post請求
            var client = new HttpClient(handler);
            /////////////////////////////////////////////////////////// 
            //以下屬於在.netfromwork環境下寫法
           // ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
            //調用證書
            //X509Certificate2 cer = new X509Certificate2(WeixinPay.CertPath, WeixinPay.CApassword, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
            //handler.ClientCertificates.Add(cer);
            ///////////////////////////////////////////////////////////
            response = await client.PostAsync(WeixinPay.API_URL, Build_Content());
            ///////////////////////////////////////////////////////////
            return response.IsSuccessStatusCode;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM