標籤:
1、自建根憑證
makecert -r -pe -n "CN=WebSSLTestRoot" -b 12/22/2013 -e 12/23/2024 -ss root -sr localmachine -len 2048
2、建網站用的認證
makecert -pe -n "CN=www.aaa.com" -b 12/22/2013 -e 12/23/2024 -eku 1.3.6.1.5.5.7.3.1 -is root -ir localmachine -in WebSSLTestRoot -len 2048 -ss WebHosting -sr localmachine
cn是網站對應的網域名稱
3、建用戶端認證
makecert -pe -n "CN=czcz1024" -eku 1.3.6.1.5.5.7.3.2 -is root -ir localmachine -in WebSSLTestRoot -ss my -sr currentuser -len 2048
cn可以是使用者名稱
根憑證在 本機電腦-可信任的根憑證授權單位
網站認證在 本機電腦-Web宿主
用戶端認證在 目前使用者-個人
iis中,建立網站用web宿主的
使用ie,訪問,當用戶端有認證試,會要求選擇認證
string r;HttpClientCertificate cert = Request.ClientCertificate;if (cert.IsPresent) r = cert.ServerSubject + "---" + cert.Subject;else r = "No certificate was found.";return Content(r);
我們可以通過代碼來擷取認證資訊
4、程式自動建立使用者用戶端認證
var path = @"…\makecert.exe";var cmd = " -pe -n \"CN=czcz1024\" -eku 1.3.6.1.5.5.7.3.2 -is root -ir localmachine -in WebSSLTestRoot -ss my -sr currentuser -len 2048";var p = Process.Start(path, cmd);p.WaitForExit(); p.Close();
調用cmd去執行,需要iis已administrator身份運行
5、匯出,並提供客戶下載
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);store.Open(OpenFlags.MaxAllowed);foreach (X509Certificate2 myX509Certificate2 in store.Certificates){ if (myX509Certificate2.Subject == "CN=czcz1024") { byte[] CertByte = myX509Certificate2.Export(X509ContentType.Pfx,"123456"); return File(CertByte, "application/octet-stream", "cert.pfx"); }}return Content("not found");
同樣,這個也需要administrator才能擷取到
需要匯出成pfx,用戶端才可以匯入,匯入的時候,要求輸入密碼,密碼為代碼中的“123456”那部分
6、iis的ssl設定
如果是必需,當用戶端沒有認證時
當選擇
沒有認證則顯示
對應上面代碼的else分支
選擇 忽略 則不會要求用戶端提供認證了
自建根,當用戶端訪問時,需要匯入根憑證到受信任的根
iis https 用戶端認證