構(gòu)建安全的Xml Web Service系列之wse之證書存儲(chǔ)位置
我們在前幾天對xml web service的安全性提出了一些建議,大家可以通過以下地址訪問:
構(gòu)建安全的Xml Web Service系列之初探使用Soap頭
構(gòu)建安全的Xml Web Service系列之如何察看SoapMessage
構(gòu)建安全的Xml Web Service系列之SSL篇
我曾經(jīng)在上面幾篇文章中承諾過要寫一些有關(guān)wse3.0的,可一直沒有時(shí)間,自身對wse3.0的認(rèn)識(shí)也是非常有限,所以一直沒有實(shí)現(xiàn)諾言,很是愧疚,今天我就一個(gè)小問題作為wse的引子,希望大家繼續(xù)關(guān)注和支持我。
第一次使用windows live writer,難免有排版和疏漏,見諒
今天發(fā)生了一件十分郁悶的事情,好多天前我用wse3證書驗(yàn)證方式架設(shè)了一個(gè)web service,另外又多此一舉的加上了SSL,并在本地安裝根證書和用于wse驗(yàn)證證書,在本地創(chuàng)建的客戶端是一個(gè)web application,在vs 2005里面調(diào)試一直沒有問題,好長時(shí)間了,我還以為一切順利呢,給合作方也寫了文檔說明,發(fā)給了人家,結(jié)果今天對方報(bào)告說將網(wǎng)站發(fā)布在開發(fā)機(jī)上后,無法訪問,錯(cuò)誤為在指定存儲(chǔ)位置找不到x.509證書,我在本機(jī)測試了下,你說郁悶不?在vs2005里面調(diào)試中運(yùn)行的好好的頁面,發(fā)布到IIS中就有這個(gè)問題,我將證書存儲(chǔ)在CurrentUser的My下面了,我開始就懷疑network services 不能訪問這個(gè)存儲(chǔ)位置造成這個(gè)錯(cuò)誤,但是為何在vs2005中調(diào)試就沒有問題呢?細(xì)想,原來在vs2005的虛擬IIS是不是運(yùn)行在network service賬戶下的,因?yàn)槲颐看握{(diào)試,并沒有看到w3wp進(jìn)程啟動(dòng),network services賬戶是不能訪問當(dāng)前用戶存儲(chǔ)下的證書的,這個(gè)是一個(gè)wse訪問證書因?yàn)闄?quán)限問題最常見的問題,而windows應(yīng)用程序因?yàn)檫\(yùn)行在當(dāng)前賬戶上卻可以訪問。而network service能夠訪問本地計(jì)算機(jī)存儲(chǔ)位置下的證書,于是我將證書重新導(dǎo)入到本地計(jì)算機(jī)-個(gè)人,然后將<x509 storeLocation="CurrentUser"更改為<x509 storeLocation="LocalMachine",重新打開網(wǎng)頁,程序就可以了。
通過今天這個(gè)小小的問題,我總結(jié)出三條經(jīng)驗(yàn):
1)當(dāng)我們遇到同樣環(huán)境下,同一個(gè)程序一個(gè)能運(yùn)行,一個(gè)不能運(yùn)行,我們首先可以考慮的是權(quán)限的問題,我們程序運(yùn)行的賬戶是否有權(quán)限訪問某個(gè)資源。
2)vs2005中虛擬的IIS和IIS存在著些許的差異,不要圖一時(shí)方便,用這個(gè)作為程序正常的標(biāo)準(zhǔn),最好還是在iis里面調(diào)試和運(yùn)行程序,可以少一些麻煩。
3 ) 當(dāng)您的應(yīng)用程序?yàn)檫\(yùn)行在iis的應(yīng)用程序的時(shí)候,如果不采用模擬,您的應(yīng)用程序是不能訪問位于當(dāng)前用戶下的證書的,包括用于SSL的證書,這個(gè)問題更典型,如果您在ie中能訪問https的頁面,在程序中卻不能的話,那問題可能就出在這里。ie是運(yùn)行在當(dāng)前用戶的,所以能訪問當(dāng)前用戶下證書,而iis中的程序是運(yùn)行在network services的,不能訪問,您必須將證書存放在本地計(jì)算機(jī)才可以。
出處:http://jillzhang.cnblogs.com/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。

浙公網(wǎng)安備 33010602011771號(hào)