首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

SSL 原理與應用 (三):.NET 開發中處理 HTTPS 請求與客戶端憑證

     編輯:關於.NET

.NET 框架未直接暴露 SSL 協議程式介面 (如 TCP/UDP),但 ASP.NET、WCF、WebRequest 等高層 API 內建 HTTPS 支援。本節聚焦 HttpWebRequest 發起 HTTPS、附加客戶端憑證、伺服端取得憑證資訊。

發起 HTTPS 請求 (與 HTTP 無異)

try {
    Uri uri = new Uri("https://www.sample.com/https.aspx");
    WebRequest req = HttpWebRequest.Create(uri);
    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
    Stream stream = resp.GetResponseStream();
    // 讀取回應...
} catch (UriFormatException) { /* 無效 URL */ }
catch (IOException) { /* 連線失敗 */ }

注意:勿直接 `new HttpWebRequest()`,必須用 `WebRequest.Create()` 工廠方法,依 URI Scheme 自動回傳 `HttpWebRequest` 或 `FileWebRequest` 等。

附加客戶端憑證 (雙向 SSL)

Uri uri = new Uri("https://www.sample.com/https.aspx");
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);

X509Certificate cert = X509Certificate.CreateFromCertFile("憑證檔路徑");
req.ClientCertificates.Add(cert);

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
// 必須妥善保護私鑰檔案

伺服端 ASP.NET 取得客戶端憑證欄位

// Request.ClientCertificate(key[, subField])
// key 值對照表:
Key含義
Certificate完整憑證二進位資料
Issuer簽發者 DN
Subject主體 DN
ValidFrom / ValidUntil有效期起迄
SerialNumber序號
PublicKey公鑰
Flags憑證旗標

Request.ClientCertificate Key 值對照表

圖 1 Request.ClientCertificate 支援的 Key 清單

核心類別回顧

  • System.Security.Cryptography.X509Certificates.X509Certificate2 — 載入/操作憑證 (含私鑰)
  • X509Store — 存取系統憑證存儲區 (CurrentUser/LocalMachine)

延伸:WCF 透過 `` 宣告式配置雙向 SSL,無需手動操作 `ClientCertificates` 集合。


作者:玄魂
出處:https://www.cnblogs.com/xuanhun/

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved