我有一個在 IIS 8.5 中運行良好的應用程序,它在 web.config 文件中使用此設定作為路徑的客戶端證書登入(智慧卡)。我必須將此應用程式遷移到 IIS 10.0,除了應用程式不提示輸入證書而只是在程式碼中拋出沒有證書的錯誤之外,一切正常。
我已經仔細檢查了 IIS 中的所有設置,憑證是相同的,SSL 設定是相同的。該應用程式是一個簡單的 .netcore 應用程序,除了證書提示之外,它運行良好。 IIS 10 中是否有與 8.5 不同的地方我可能會忽略。 web.config 中使瀏覽器能夠提示憑證的部分我相信就是這一部分。執行此操作的開發人員已不再與我們合作,我將不勝感激任何幫助。除了我已經檢查過的內容之外,我還需要在 IIS 中檢查什麼嗎?
我瀏覽了一些其他帖子,並確保根憑證和中間憑證位於憑證儲存區等。
<location path="SmartCard">
<system.webServer>
<security>
<access sslFlags="Ssl,SslNegotiateCert" />
</security>
</system.webServer>
答案1
全部事物存在平等的, 它應該工作一樣!
但這是關鍵部分 - 也許並非所有事物在 ? 的水平之上都是平等的web.config
? (或下方 - web.config 將僅套用於屬於相同 HTTP URL 路徑一部分的智慧卡資料夾,基於該資料夾地點標籤)
Windows\System32\InetSrv\config\ApplicationHost.config
往往會累積事物隨著時間的推移,人們忘記了伺服器層級的配置變更。
所以,可能的選擇:
檢查是否有伺服器證書用私鑰已安裝且網站綁定包含 HTTPS
- 我知道您提到通過 SSL 使用網站是可行的 - 這應該證明這一點
從工作伺服器轉儲站點的有效設置,並與轉儲的非工作伺服器設定進行比較
- 對於獎勵積分,像 Web 部署工具這樣的東西可能會有所幫助
- 手動方法:
APPCMD LIST CONFIG http://site/pathabovesmartcard/ /text:* >working.txt
(在工作伺服器上)APPCMD LIST CONFIG http://site/pathabovesmartcard/ /text:* >NONworking.txt
(關於......你猜對了,不工作的伺服器!)- 進而比較使用文字編輯器或明智的眼睛
- 如果您喜歡 XML,請省略 /text:*
新增
NETSH SHOW SERVICESTATE
每個的比較以快速查看 HTTP.SYS 佇列
這實際上是刪除的版本 - 您還可以查看 中applicationhost.config
未按站點過濾的完整內容(首先合理地組織,然後與後續更改線性地組織)Windows\System32\InetSrv\Config
,並且可能變得更容易(或更難)。