.NET 框架未直接暴露 SSL 協議程式介面 (如 TCP/UDP),但 ASP.NET、WCF、WebRequest 等高層 API 內建 HTTPS 支援。本節聚焦 HttpWebRequest 發起 HTTPS、附加客戶端憑證、伺服端取得憑證資訊。
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` 等。
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();
// 必須妥善保護私鑰檔案
// Request.ClientCertificate(key[, subField]) // key 值對照表:
| Key | 含義 |
|---|---|
| Certificate | 完整憑證二進位資料 |
| Issuer | 簽發者 DN |
| Subject | 主體 DN |
| ValidFrom / ValidUntil | 有效期起迄 |
| SerialNumber | 序號 |
| PublicKey | 公鑰 |
| Flags | 憑證旗標 |

圖 1 Request.ClientCertificate 支援的 Key 清單
System.Security.Cryptography.X509Certificates.X509Certificate2 — 載入/操作憑證 (含私鑰)X509Store — 存取系統憑證存儲區 (CurrentUser/LocalMachine)延伸:WCF 透過 `
` 宣告式配置雙向 SSL,無需手動操作 `ClientCertificates` 集合。
作者:玄魂
出處:https://www.cnblogs.com/xuanhun/