2010-01-07 28 views
0

我無法理解使用證書的一般方案。 例如:我在某個網站上有帳戶。我有namepassword。我該怎麼做才能登錄這個網站? - 我應該打開_https://website:443/login並填寫字段,如果一切正常,我會獲得准入。我如何使用用戶證書?

現在,我想通過java + httpclient(apache)以編程方式執行這些步驟。 我已經寫了:

client = new DefaultHttpClient(); 

client.getParams().setParameter(ClientPNames.COOKIE_POLICY, 
           CookiePolicy.BEST_MATCH); 
client.setCookieStore(new BasicCookieStore()); 
client.getCredentialsProvider() 
     .setCredentials(new AuthScope(ADDRESS, new Integer(PORT)), 
         new UsernamePasswordCredentials(USERNAME, USERPWD)); 

而且,我也要用服務器的證書創建的trustStore:

System.setProperty("javax.net.ssl.trustStore", "./KeyStore/myca"); 

其中 'myca' 用 'InstallCert.java' 造 - Sun公司的產品。

但我想以編程方式執行所有這些步驟,如瀏覽器(FFox或Opera)導入服務器的證書...用戶只想使用我的應用程序,而不是一組額外的應用程序。

我該怎麼辦呢?

現在,主要問題:爲什麼服務器不需要用戶的證書?我該如何使用自己的證書進行身份驗證? (如果我有用戶證書,我不需要'name''password'登錄服務器?)

回答

3

爲什麼服務器不需要用戶的 證書?

服務器不需要用戶證書,因爲大多數用戶都沒有一個,不要現在它是什麼,以及如何得到一個。即使他們願意,這樣的證書要麼難以獲得,要麼很昂貴,所以很多用戶不會得到一個。

因此,任何需要客戶端證書的服務器都會將用戶數量減少1000倍。大多數服務器所有者不希望這樣。

如果我有用戶的證書我將 不需要「name''password」登錄到服務器 ?

取決於您的要求。要求證書+用戶名/密碼將被視爲雙因素認證,這是一種更強有力的保護形式,然後只需要一個因素。通過詢問某種生物識別技術,它會變得更加強大。

我該怎麼辦呢?

執行到底是什麼?你正在談論的是「以編程方式」來做事,但你已經提出了代碼......?

我該如何使用我自己的證書進行身份驗證?

這應該在服務器的配置中完成。您需要設置一個包含trustet根證書的信任存儲+要求客戶端在ssl配置中進行身份驗證。例如搜索here for clientauth。

相關問題