2012-11-26 530 views
3

我一直有這個問題約2個星期。我做了很多研究,嘗試了不同的方式,但沒有快樂。我的計算機上有一個開發網站(Windows 7專業版),使用sql server 2008 r2並使用IIS 7.5。有一個實際的開發服務器運行數據庫和Web服務器,但由於我的位置,我不能使用主開發網站。我發出了自簽名的可信根證書:自簽名SSL證書403.7錯誤

makecert -r -pe -n "CN=ROOT AUTHORITY" -ss my -sr CurrentUser -a sha1 -sky signature -cy authority -sv ca.pvk ca.cer 

然後我將它安裝到本地計算機上的受信任根。之後,我爲IIS創建了一個證書。

makecert -pe -n "CN=example.website.name.com" -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -ic ca.cer -iv ca.pvk -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -sv server.pvk server.cer 

然後,我創建了.PFX文件IIS

pvk2pfx -pvk server.pvk -spc server.cer -pfx server.pfx 

我做以上後。我將證書導入IIS,然後我的網站綁定到SSL證書(server.pfx)

畢竟做到這一點,我去的網站https://example.website.name.com上,我得到403.7禁止的。

有人可以幫我解決這個問題嗎?

+0

您的服務器向客戶端詢問匹配的證書 - 這有時稱爲「mututal SSL 」。這是你的預期嗎?如果是這樣,你是否已經在客戶端機器上安裝了客戶端證書? –

+0

我安裝了受信任的根證書,服務器證書和個人證書以訪問服務器。對不起,我應該補充說。這是我的個人證書:makecert -n「CN = Name」-ic ca.cer -iv ca.pvk -a sha1 -sky exchange -pe -sv name.pvk name.cer創建私鑰cert:pvk2pfx -pvk name .pvk -spc name.cer -pfx name.pfx還有一件事要補充,這一切都在一臺機器上。 – Zac

回答

1

看看一些陷阱...

服務器問題#1 - 傳入的客戶端證書有不在服務器上存在1條或多個證書路徑。打開證書,轉到證書路徑(選項卡),並確保每個根證書都在SERVER受信任的根證書頒發機構中。請注意,您不需要在服務器上安裝證書,只需在證書(本地計算機)\受信任的根證書頒發機構下的根證書公鑰即可。

服務器問題#2(以前提到的解決方案) - 在IIS中,對於該站點,請確保將SSL Settings設置爲Accept或Require(永不忽略)。使用Require的好處是,IIS日誌會顯示你是403錯誤,因爲Accept只會讓你的IsPresent == false,但有一個200的http代碼。

客戶端問題#1 - 與服務器問題#1相同,必須相信這些權限!

客戶端問題#2 - 您擁有受信任的根授權人,但不是證書自身的私鑰。確保將pfx(私鑰)安裝到證書存儲中,而不是公鑰(.cer)。您還可以通過雙擊證書存儲區中的證書並在常規選項卡上看到是否擁有私鑰,您應該看到一條消息。

客戶問題#3 - 您將證書放在錯誤的地方。可能最好將證書放在證書(本地計算機)\個人\證書中,而不是(當前用戶)。這將使該證書可用於處理運行您的代碼並實際需要訪問它的帳戶。

客戶端問題#4 - 右鍵單擊​​證書(在存儲中不是.cer文件) - >所有任務 - >管理私鑰...並確保運行代碼的進程帳戶具有「讀取「許可。對此的快速測試(但不推薦用於生產用途)是將「Everyone」添加爲已讀,以查看這是否是您的問題

+0

我試着爲你的迴應投票,但它說我需要至少15的聲望。它確實爲我工作。非常感謝。有時PKI可能會很痛苦。 – Zac