C# .net中的https請求

來源:互聯網
上載者:User

標籤:ram   導致   java   http   cat   span   manage   1.5   tag   

在對接華為NB-IoT平台時用到了https串連方式, 華為方面提供了crt格式的認證檔案, 但官方只給了java範例, C#引用該認證時出現了問題, 下面是踩的坑: 

NB_IoT平台介面調試, https認證方式

  • 首先在代碼中加入
  • 1 ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);

    回呼函數直接返回true 不驗證認證

  • 最初只使用了一個認證 研究https驗證方式後, 發現需要同時使用"校正"和"裝置端認證", 於是匯入兩個認證
    1 X509Certificate cer = new X509Certificate(@"C:\ca.crt");2 webrequest.ClientCertificates.Add(cer2);

    後來發現已連線的服務器地址有問題 更改了串連地址, 返回時出現"CryptographicException"異常, 尋找解決方案, 加入代碼

    1 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

    以使用TLS加密模式. (這裡注意 需要升級到.net framework4.5以上, 才有Tls加密方式)

  • 嘗試過試用其他格式的認證, 但是都不可用,使用JKS格式的認證, 產生時直接報錯"找不到申請的對象", 懷疑是認證格式C#不支援, 貌似JKS是java的一個工具專門使用的格式.使用其他格式後,可以產生認證,但是返回時顯示"未能建立SSL/TLS安全通道"
  • 改X509Certificate 為X509Certificate2 返回400錯誤 說明認證驗證通過 但是請求格式有問題 原因待分析
  • 第二天早上(4月12)發現, Https頭內的"Content-Type"中多了一個空格"Content -Type", 導致格式錯誤, 純手誤 不知這個空格是怎麼進去的, 去掉空格後請求成功了.囧

C# .net中的https請求

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.