在WEB應用程式中如何正確使用數字證書?

2021-05-02 08:30:03 字數 2316 閱讀 7985

internet

上解決"

我是誰"

的問題,就如同現實中我們每乙個人都要擁有一張證明個人身份的身份證或駕駛執照一樣,以表明我們的身份或某種資格。

數字證書是由權威公正的第三方機構即

ca中心簽發,以數字證書為核心的加密技術,可以對網路上傳輸的資訊進行加密和解密、數字簽名和簽名驗證,確保網上傳遞資訊的機密性、完整性,以及交易實體身份真實性,簽名資訊不可否認性,從而保障網路應用的安全性。

證書是應用程式和第三方系統間進行互動的憑證,所以證書應該防範被盜用,系統在部署時,證書可以採用以下兩種方式來儲存和使用證書:

1、通過計算機證書管理機制來管理使用者證書:直接匯入計算機並限定證書不能被匯出。這種方式限定了計算機只能在服務執行的帳號下使用以及證書不能匯出,具有較高的安全性,但如果伺服器安全策略規定,使用使用者數字證書時,使用者必須輸入密碼或必須使用者確認,作為

service

程式,系統將執行不正常。通常情況下

pci要求範圍內的伺服器都會有這樣的限定。

intptr storehandle;

storehandle = certopenstore(cert_store_prov_system, 0, 0, cert_system_store_current_user, "my");

intptr currentcertcontext;

currentcertcontext = certenumcertificatesinstore(storehandle, (intptr)0);

int i = 0;

while (currentcertcontext != (intptr)0)

certclosestore(storehandle, 0);

return m_certs.count;

2、採用檔案的形式儲存證書,應用程式直接使用證書檔案。這種方式最大的風險是證書被非法使用者訪問,系統管理員需要對證書檔案進行訪問控制或採用基於帳戶的檔案加密(

system.io.file.encrypt(strcertfilepath))。

x509certificate2

cert = new

x509certificate2(strcertfilepath,strcertpassword);

這種方式同時支援證書密碼,在生成證書時,可以設定證書的密碼。

3、採用檔案的方式使用證書可以演化出把證書轉換成

byte

陣列存放在登錄檔中並通過

acl控制,以及把證書檔案存放在

isolated storage中等其他形式。

在使用證書通訊中,伺服器需要對彼此的證書進行認證,判定該證書是否有效。

.net 1.1

開發人員通常會實現乙個定製的

certificatepolicy,

來響應證書異常的情況。

在.net 1.1

以後,採用委託的方式來解決證書異常

servicepointmanager.servercertificatevalidationcallback = new system.net.security.remotecertificatevalidationcallback(checkvalidationresult);

證書出現異常,說明雙方認證環節出現錯誤,原因可能是:證書過期(如果伺服器本身的時間異常也會引起證書過期);證書所有人和證書使用人不一致,以及證書簽名無效等。原則上講,證書無效的情況下,系統都不應該和對方進行通訊,但是開發人員可能會為了系統穩定性,完全忽略證書異常的問題。

//for 2.0

public

bool checkvalidationresult(object sender, x509certificate certificate, x509chain chain,system.net.security. sslpolicyerrors errors)

//for 1.1

internal

class

acceptallcertificatepolicy : icertificatepolicy

public

bool checkvalidationresult(servicepoint spoint, system.security.cryptography.x509certificates.x509certificate cert, webrequest wrequest, int certprob) }

這樣就關閉了系統間的認證機制,使系統在受到假冒身份、中間人等攻擊方式時,沒有任何防範,這將給系統帶來很大的隱患。當證書認證出現問題時,應該根據錯誤的型別以及系統安全性要求不同進行甄別處理,同時做相應的日誌和警報,通知維護人員處理異常。

select poll 在應用程式中如何使用

select 和poll 系統呼叫的本質一樣,前者在 bsd unix 中引入的,後者在 system v 中引入的。一 select 應用程式中最廣泛用到的是 bsd unix 中引入的 select 系統呼叫,其原型如下 int select int maxfdp,fd set readfds,...

在tomcat中配置web應用程式

在tomcat中配置web應用程式 2011年10月12日 星期三 手動配置乙個web應用程式 第二步 在web inf中建立兩個資料夾classes,lib和乙個web.xml 第三步 建立web,xml將訪問應用程式的頁面設定為 html web.xml裡面的內容為 hello.html 或者在...

在tomcat中配置web應用程式

在tomcat中配置web應用程式 現在我們用工具myeclipse工具建立的web專案都是合理的web應用程式 那麼如果不用工具的話我們又該怎麼在tomcat中配置乙個web應用程式呢 hello.html為此web應用程式的歡迎頁面 在web inf中建立 classes中放置一下需要的類庫檔案...