2009-11-25 76 views
1

我有一個ASP NET Web服務器應用程序調用另一個進程運行在同一個盒子上創建一個PDF文件並返回它。第二個過程需要通過SSL進行安全連接。從ASP調用https進程網絡

第二個進程已經發布了帶有數字證書的ASP NET應用程序,但我仍然無法進行身份驗證,出現403錯誤。

的代碼是一個有點難以展現,但這裏有一個簡單的方法...

X509Certificate cert = X509Certificate.CreateFromCertFile("path\to\cert.cer"); 
    string URL = "https://urltoservice?params=value"; 
    HttpWebRequest req = HttpWebRequest.Create(URL) as HttpWebRequest; 
    req.ClientCertificates.Add(cert); 
    req.Credentials = CredentialCache.DefaultCredentials; 
    req.PreAuthenticate = true; 
    /// error happens here 
    WebResponse resp = req.GetResponse(); 
    Stream input = resp.GetResponseStream(); 

錯誤文本是「遠程服務器返回錯誤:禁止(403)」 歡迎任何指針。

回答

0

403聽起來像是授權問題,而不是認證問題。這可能是由您的PDF服務訪問的文件和文件夾上的NTFS安全設置引起的。也許它沒有權限在輸出文件夾中創建PDF文件?

您能否將客戶端證書安裝到您的瀏覽器中,然後通過瀏覽器訪問您的PDF服務?當你這樣做的時候,你還會得到403還是有用?

您是否可以臨時配置PDF服務以允許未加密的HTTP連接?這是否會讓問題消失?

從Windows資源管理器中,您可以授予「網絡服務」帳戶完全控制與PDF服務站點的根對應的物理文件夾嗎?同時授予它完全控制它訪問的任何其他目錄。在你弄明白事情之後,你應該把事情鎖定。

或者您可以將應用程序池更改爲在不同帳戶下運行 - 例如,你自己的帳戶。

最後:如果你正在運行IIS 7,你可以打開失敗的請求追蹤,這應該會給你更多關於失敗原因的信息。

+0

403既可以是授權和認證:403.7 - 要求客戶端證書。 403.16 - 客戶端證書不可信或無效。 403.17 - 客戶端證書已過期或尚未生效。 – Gonzalo 2009-11-25 16:02:29

+0

感謝您的線索。我已經添加了網絡服務,並擁有pdf服務器目錄的完整權限並啓用了跟蹤功能。關閉HTTPS「修復」問題,但不適合現場。 更多... – 2009-11-25 20:35:50

+0

下面是我遵循的步驟。 1.我們的CA頒發了「報告用戶」的客戶端證書 2.在我的PC打開的IE上,輸入pdf報告服務器的URL,提示您輸入證書,選擇上面的證書。 3.顯示pdf! 所以交互式工作沒有問題。回到web服務器 - 我編寫了上面的代碼,允許它以編程方式創建一個httprequest對象,但仍然在收到403錯誤。 跟蹤顯示它是一個403.7「訪問被拒絕」錯誤。 我會繼續努力,併發布任何進展 - 在此期間,所有的幫助表示讚賞。 – 2009-11-25 20:36:39

2

最後固定(6浪費在這個小時* &%$ @#&)

我需要授權訪問的數碼網絡證書到帳戶的私鑰調用ASP.NET應用程序下運行。儘管您可能希望在更受限制的帳戶下運行,但該帳戶默認爲NETWORK SERVICE。 授予訪問權限與winhttpcertcfg工具,在這裏拿到了它的工作是什麼對我來說:

winhttpcertcfg -g -s「證書名稱」 -c「LOCAL_MACHINE \ MY」 -a「網絡服務」 其中「證書名稱」 digi證書的CN。 在http://support.microsoft.com/kb/901183

感謝所有誰就如何得到這個工作:)三分球幫助了更多信息