版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、)這幾天被和證書搞得頭昏腦脹的。不過還好終于把這個(gè)搞定了。用進(jìn)行雙向身份驗(yàn)證意思就是在客戶機(jī)連接服務(wù)器時(shí),鏈接雙方都要對(duì)彼此的數(shù)字證書進(jìn)行驗(yàn)證,保證這是經(jīng)過授權(quán)的才能夠連接(我們鏈接一般的時(shí)采用的是單向驗(yàn)證,客戶機(jī)只驗(yàn)證服務(wù)器的證書,服務(wù)器不驗(yàn)證客戶機(jī)的證書。而連接網(wǎng)上銀行時(shí)使用的盾就是用來存儲(chǔ)進(jìn)行雙向驗(yàn)證所需要的客戶端證書的)。里面內(nèi)置了一個(gè)數(shù)字證書生產(chǎn)工具:t但是這個(gè)工具只能生成自簽名的數(shù)字證書。所謂自簽名就是指證書只能保證自己是完整的,沒有經(jīng)過非法修改的。但是無法保證這個(gè)證書是屬于誰(shuí)的。其實(shí)用這種自簽名的證書也是可以進(jìn)行雙向驗(yàn)證的用生成的自簽名證書進(jìn)行雙向驗(yàn)證請(qǐng)看這里,向這位仁兄致意:)
2、,但是這種驗(yàn)證有一個(gè)缺點(diǎn):對(duì)于每一個(gè)要鏈接的服務(wù)器,都要保存一個(gè)證書的驗(yàn)證副本。而且一旦服務(wù)器更換證書,所有客戶端就需要重新部署這些副本。對(duì)于比較大型的應(yīng)用來說,這一點(diǎn)是不可接受的。所以就需要證書鏈進(jìn)行雙向認(rèn)證。證書鏈?zhǔn)侵笇?duì)證書的簽名又一個(gè)預(yù)先部署的,眾所周知的簽名方簽名完成,這樣每次需要驗(yàn)證證書時(shí)只要用這個(gè)公用的簽名方的公鑰進(jìn)行驗(yàn)證就可以了。比如我們使用的瀏覽器就保存了幾個(gè)常用的R每次連接到網(wǎng)站時(shí)只要這個(gè)網(wǎng)站的證書是經(jīng)過這些簽名過的。就可以通過驗(yàn)證了。但是這些共用的的服務(wù)不是免費(fèi)的。而且價(jià)格不菲。所以我們有必要自己生成一個(gè)的密鑰對(duì),然后部署應(yīng)用時(shí),只要把這個(gè)的私鑰部署在所有節(jié)點(diǎn)就可以完成驗(yàn)證
3、了。要進(jìn)行的生成,需要()。你也可以在找到下的版本安裝好以后就可以生成證書鏈了,我寫了一個(gè)解決這些東西:echooffsetCsetPWD_SERVER_KS=serverkssetPWD_SERVER_KEY=serverkeysetPWD_CLIENT_KS=clientkssetPWD_CLIENT_KEY=clientkeyifnotexistca.key(echoGeneratingacarootkeyfile.opensslreq-new-x509-keyoutca.key-outca.crt-config%CONFIG%)else(echoca.keyalreadyexists.
4、ifnotexistserver.keystore(echoGeneratingserversprivatekey.keytool-genkey-aliaslogon_server_private_key-validity365-keyalgRSA-keysize1024SERVER_KS%-keystoreserver.keystore-keypass%PWD_SERVER_KEY%-storepass%PWD)else(echoserver.keystorealreadyexits.)ifnotexistclient.keystore(echoGeneratingclientsprivat
5、ekey.keytool-genkey-aliasipclient_private_key-validity365-keyalgRSA-keysize1024-keystoreclient.keystore-keypass%PWD_CLIENT_KEY%-storepass%PWD_CLIENT_KS%)else(echoclient.keystorealreadyexits.)echo=Finishedkeygeneration=ifnotexistlogon_server_private_key.csr(echoGeneratingserverssingaturerequestfile.k
6、eytool-certreq-aliaslogon_server_private_key-sigalgMD5withRSA-filelogon_server_private_key.csr-keypass%PWD_SERVER_KEY%-storepass%PWD_SERVER_KS%-keystoreserver.keystore)else(echologon_server_private_key.csralreadyexits.)ifnotexistipclient_private_key.csr(echoGeneratingclientssingaturerequestfile.keyt
7、ool-certreq-aliasipclient_private_key-sigalgMD5withRSA-fileipclient_private_key.csr-keypass%PWD_CLIENT_KEY%-storepass%PWD_CLIENT_KS%-keystoreclient.keystore)else(echoipclient_private_key.csralreadyexits.ifnotexistlogon_server_private_key.crt(opensslca-inlogon_server_private_key.csr-outlogon_server_p
8、rivate_key.crt-certca.crt-keyfileca.key-notext-config%CONFIG%)else(echologon_server_private_key.crtalreadyexits.)ifnotexistipclient_private_key.crt(opensslca-inipclient_private_key.csr-outipclient_private_key.crt-certca.crt-keyfileca.key-notext-config%CONFIG%)else(echoipclient_private_key.crtalready
9、exits.)echo=Finishedcarootsignaturing=echoImportingcarootcertsintokeystore.keytool-import-v-trustcacerts-aliasca_root-fileca.crt-storepass%PWD_SERVER_KS%-keystoreserver.keystorekeytool-import-v-trustcacerts-aliasca_root-fileca.crt-storepass%PWD_CLIENT_KS%-keystoreclient.keystoreechoImportingsignatur
10、edkeys.keytool-import-v-aliaslogon_server_private_key-filelogon_server_private_key.crt-keypass%PWD_SERVER_KEY%-storepass%PWD_SERVER_KS%-keystoreserver.keystorekeytool-import-v-aliasipclient_private_key-fileipclient_private_key.crt-keypass%PWD_CLIENT_KEY%-storepass%PWD_CLIENT_KS%-keystoreclient.keyst
11、oreechoAlldone!運(yùn)行這個(gè)批處理,期間需要回答一些問題,然后就可以得到一些文件其中的密鑰文件。是需要在客戶端部署的,是在服務(wù)器部署的。是然后可以用下面的代碼測(cè)試:/*Copyrights(C)2008Bearice( HYPERLINK mailto:BeariceGBeariceG)*ReleaseunderGNU/GPLVersion2.*/packagecn.bearice.ipcontroller.ccserver;importjava.io.BufferedReader;importjava.io.FileInputStream;importjava.io.InputSt
12、reamReader;importjava.io.PrintWriter;importjava.security.KeyStore;importjava.security.cert.X509Certificate;importjava.util.logging.Level;importjava.util.logging.Logger;.ssl.KeyManagerFactory;.ssl.SSLContext;.ssl.SSLPeerUnverifiedException;.ssl.SSLServerSocket;.ssl.SSLServerSocketFactory;.ssl.SSLSess
13、ion;.ssl.SSLSocket;.ssl.SSLSocketFactory;.ssl.TrustManagerFactory;/*authorBearice*/publicclassNewClassextendsThreadOverridepublicvoidrun()trysleep(100);SSLContextctx=SSLContext.getInstance(SSL);KeyManagerFactorykmf=KeyManagerFactory.getInstance(SunX509);TrustManagerFactorytmf=TrustManagerFactory.get
14、Instance(SunX509);KeyStoreks=KeyStore.getInstance(JKS);/KeyStoretks=KeyStore.getInstance(JKS);ks.load(newFileInputStream(e:/certs/client.keystore),clientks.toCharArray();/tks.load(newFileInputStream(e:/certs/tclient.keystore),clientks.toCharArray();kmf.init(ks,clientkey.toCharArray();tmf.init(ks);ct
15、x.init(kmf.getKeyManagers(),tmf.getTrustManagers(),null);SSLSocketFactoryfactory=ctx.getSocketFactory();SSLSocketsocket=(SSLSocket)factory.createSocket(,4433);showCerts(socket.getSession();PrintWriterpw=newPrintWriter(socket.getOutputStream();pw.println(GET/index.htmlHTTP/1.0);pw.println(Server:);pw
16、.println(Connection:close);pw.println();pw.flush();BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream();Stringln;while(ln=in.readLine()!=null)System.err.println(ln);catch(Exceptionex)Logger.getLogger(NewClass.class.getName().log(Level.SEVERE,null,ex);publicstaticvoidshowCe
17、rts(SSLSessionsession)X509Certificatecert=null;trycert=(X509Certificate)session.getPeerCertificates()0;catch(SSLPeerUnverifiedExceptione)e.printStackTrace();System.err.println(session.getPeerHost()+didnotpresentavalidcertificate);/System.exit(1);return;System.out.println(session.getPeerHost()+haspre
18、sentedacertificatebelongingto+cert.getSubjectDN()+n+Thecertificatewasissuedby:t+cert.getIssuerDN()+publicstaticvoidmain(Stringargs)throwsExceptionSSLContextctx=SSLContext.getInstance(SSL);KeyManagerFactorykmf=KeyManagerFactory.getInstance(SunX509);TrustManagerFactorytmf=TrustManagerFactory.getInstan
19、ce(SunX509);KeyStoreks=KeyStore.getInstance(JKS);/KeyStoretks=KeyStore.getInstance(JKS);ks.load(newFileInputStream(e:/certs/server.keystore),serverks.toCharArray();/tks.load(newFileInputStream(e:/certs/tserver.keystore),serverks.toCharArray();kmf.init(ks,serverkey.toCharArray();tmf.init(ks);ctx.init
20、(kmf.getKeyManagers(),tmf.getTrustManagers(),null);SSLServerSocketFactoryfactory=ctx.getServerSocketFactory();SSLServerSocketserverSocket=(SSLServerSocket)factory.createServerSocket(4433);serverSocket.setNeedClientAuth(true);newNewClass().start();SSLSocketsocket=(SSLSocket)serverSocket.accept();trysocket.startHandshake();catch(Ex
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 細(xì)毛材料生物降解-洞察分析
- 心理干預(yù)技術(shù)評(píng)估-洞察分析
- 《人力與組織發(fā)展》課件
- 亞硝酸鈉毒性研究進(jìn)展-洞察分析
- 微創(chuàng)技術(shù)在牙科手術(shù)中的應(yīng)用-洞察分析
- 約數(shù)應(yīng)用案例分析-洞察分析
- 網(wǎng)絡(luò)釣魚攻擊手段-洞察分析
- 條口識(shí)別產(chǎn)業(yè)應(yīng)用-洞察分析
- 藥物現(xiàn)代工藝優(yōu)化探討-洞察分析
- 營(yíng)養(yǎng)健康食品評(píng)價(jià)-洞察分析
- 燃?xì)庥邢薰就话l(fā)環(huán)境專項(xiàng)應(yīng)急預(yù)案
- 狼瘡性腦病的護(hù)理
- 2024版砂石料物流配送服務(wù)合同3篇
- 中華人民共和國(guó)保守國(guó)家秘密法實(shí)施條例培訓(xùn)課件
- 中醫(yī)醫(yī)術(shù)確有專長(zhǎng)人員醫(yī)師資格考核申報(bào)資料表
- 2024年全國(guó)統(tǒng)一高考英語(yǔ)試卷(新課標(biāo)Ⅰ卷)含答案
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識(shí) CCAA年度確認(rèn) 試題與答案
- (整理)《運(yùn)籌學(xué)》期末考試試題與參考答案
- (完整版)《金匱要略》方劑總匯(完整版)
- 供電服務(wù)突發(fā)事件專項(xiàng)應(yīng)急預(yù)案
- 美國(guó)簽證在職收入證明中英文對(duì)照模版
評(píng)論
0/150
提交評(píng)論