看板 C_Sharp 關於我們 聯絡資訊
※ [本文轉錄自 Visual_Basic 看板] 作者: retsamsu (haha) 看板: Visual_Basic 標題: [.NET] IIS強迫跑SSL模式與SQL 2005 Reporting Services over SSL 時間: Fri Dec 18 13:58:34 2009 好讀網誌版:http://blog.xuite.net/retsamsu/diary/29392339 公司裡負責的系統有Web Server Uses Plain Text Authentication Forms缺失,今天想 說把它解決掉。原來覺得可能很簡單的,不過變成要改一些Code,特此記錄下來供以後 與網友參考。 原來的環境是這樣,某個AP Server上面跑IIS(http and https),被nessus偵測出來某 個AP的default.aspx,帳號密碼登入是用明碼傳送,可能會有資安風險。 Web Server Uses Plain Text Authentication Forms Synopsis : The remote web server might transmit credentials in cleartext. Description : The remote web server contains several HTML form fields containing an input of type 'password' which transmit their information to a remote web server in cleartext. An attacker eavesdropping the traffic between web browser and server may obtain logins and passwords of valid users. Solution : Make sure that every sensitive form transmits content over HTTPS. Risk factor : Medium / CVSS Base Score : 5.0 (CVSS2#AV:N/AC:L/Au:N/C:P/I:N/A:N) Plugin output : Page : /css/ Destination page : Default.aspx Input name : Login1$Password Nessus ID : 26194 因此就要去修正(不修正也不行阿),在網路上找了一下,就決定先把IIS的80 Port (http)先拿掉,都走443 Port (https)。找到這位大大寫的,就來實作一下,步驟如下: 先把原來的網站(通常是預設的網站那個)修改他的內容,把TCP連接埠改成81(或其他外 面連不進來的Port,因為IIS一定要設定TCP連接埠,所以就設定成一個連不進來的Port) ,SSL連接埠部分填443。按確定以後重啟原來的網站(預設的網站),現在Port 80應該是 不會通了,443那個應該會通(若不通應該是SSL設定問題,這邊不多贅述)。 接著下來開一個新的網站,讓他聽80 Port,再轉到443 Port上面。網站說明的地方打你 想要的字串就可以。TCP連接埠用Port 80就好。主目錄部分隨便找一個就行(因為等一 下我們會來設redirect),允許讀取就好(如果原來的網站有什麼,這邊就設什麼), 完成網站設定的動作。 接下來對剛剛新設的網站做設定,到主目錄的地方,選擇某個URL位置的重新導向,在導 向到的地方要轉的網址(https://...),根據需求勾選下面的選項: 上面所輸入的URL:就是直接轉址,如果有旗下的AP(如http://abc/ap),他也不會管, 還是只有https://...。 輸入的URL下的目錄:如果你想要轉到轉址下的某個檔案或目錄,就用這個。 這個資源的永久重新導向:就是轉到妳的轉址,旗下自動對應轉址下的任何目錄 (如http://abc/ap -> https://.../ap) 選完以後重啟這個網頁,就完成了轉址動作,測試一下看有沒有什麼問題。 在我測試的時候,發現原來連結報表伺服器的部份也死了。原因是因為我的報表伺服器 也是在同一台,所以http沒了自然都不能用了(找不到檔案)。所以先把報表伺服器的設 定先改一下,然後再看程式要改哪邊。 選擇Reporting Services組態,對報表伺服器虛擬目錄那邊做設定,勾選需要安全通訊 端層(SSL)連接,需要用於有三個選項可以選: 1 - 連接:只有連接的時候使用SSL。 2 - 報表資料:在產生報表資料傳送時使用SSL。 3 - 所有SOAP API:全部使用SSL(網頁處理)。 憑證名稱部分,就打你IIS用的憑證註冊網址(如abc.com.tw),按套用就完成了。 來到AP系統看看,發現錯誤又多了一個。 基礎連接已關閉: 無法為SSL/TLS 安全通道建立信任關係 這個的原因是因為我們是一個憑證很多伺服器在用,但是在連接時會檢查這個憑證是否 有問題,在瀏覽器瀏覽的時候可以按掉解決,這時候就不行了。再上網找解決方案,找 到這個大大寫的方法,修改自己的程式。不過我是用VB.NET寫的,所以再找一下MSDN, 提供解法如下。 Public Shared Function ValidateCert(ByVal sender As Object, ByVal certificate As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal chain As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslPolicyErrors As System.Net.Security.SslPolicyErrors) As Boolean Return True End Function 然後在進入報表之前做下面的動作(每次登入只需做一次)即可。 System.Net.ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf ValidateCert) 其實就是避掉錯誤的回傳這樣,詳情請看MSDN相關函式介紹。 這樣就完成所有的設定了。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.209.21 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.209.21