• 血战棋牌官网

  • 血战棋牌官网

  • 血战棋牌官网

  • 血战棋牌官网

基于ejbca community 6.3.1.1構建(jian)獨立(li)ca系統管理數(shu)字(zi)zhong)?/h1>
作(zuo)者︰凌(ling)承(cheng)一(yi)  發(fa)布(bu)日期︰2020-02-26 03:15:51

  •   “數(shu)字(zi)zhong)?rdquo;這個名詞相信很(hen)多人听過,但並不了解,“ejbca”可(ke)能很(hen)多人都沒有(you)听過

      數(shu)字(zi)zhong)?椋ertificate),就是互聯網通信過程中(zhong)標志(zhi)通信各方jiao)矸蕕囊yi)個文件,可(ke)以理解為(wei)“網絡身份證”,主要(yao)目的是驗證身份

      ejbca,是一(yi)個CA(Certificate Authority)系統軟(ruan)件,CA是數(shu)字(zi)zhong)?槿現?zhong)心的簡稱,主要(yao)功(gong)能是管理數(shu)字(zi)zhong)?椋 ㄖ?櫚陌浞fa)、銷(xiao)毀、更新(xin)等,ejbca實(shi)現了CA規範,因此可(ke)以用來管理數(shu)字(zi)zhong)?/p>

      接下(xia)來,筆(bi)者將按照ejbca安(an)裝(zhuang)、使用、數(shu)字(zi)zhong)?槭褂謾eb service接口(kou)、nginx代理順cheng)蛑zhu)步介紹一(yi)個獨立(li)ca系統完(wan)整的建(jian)立(li)與使用過程

    centos安(an)裝(zhuang)ejbca-community-6.3.1.1

      ejbca安(an)裝(zhuang)過程算比較(jiao)復雜了,本文以centos 6.5系統為(wei)例介紹安(an)裝(zhuang)過程,其(qi)他linux可(ke)以參考,windows下(xia)的安(an)裝(zhuang)過程幾乎相同,安(an)裝(zhuang)過程使用是ejbca community 6.3.1.1(社區(qu)版),安(an)裝(zhuang)過程請嚴格按照以下(xia)步驟,不然(ran)很(hen)容易出錯!

    血战棋牌官网

      安(an)裝(zhuang)ejbca需要(yao)jdk-1.7以上(shang)、ant構建(jian)工具(ju)、可(ke)用的mysql數(shu)據庫、jboss-7.1.1,其(qi)中(zhong)jdk、ant、mysql安(an)裝(zhuang)配(pei)置過程參考http://www.cnblogs.com/ywlaker/p/6129872.html,如果(guo)已(yi)經安(an)裝(zhuang)過這些(xie),可(ke)以忽略,直接進入以下(xia)步驟

    血战棋牌官网

      從jboss官方網站下(xia)載jboss安(an)裝(zhuang)包︰jboss-as-7.1.1.Final.tar.gz,解壓並配(pei)置環(huan)境變量

    tar xvf jboss-as-7.1.1.Final.tar.gz -C /usr/javavi /etc/profile

      追加內容

    #jboss confexport JBOSS_HOME=/usr/java/jboss-as-7.1.1.Final

      使配(pei)置立(li)即生(sheng)效(xiao)

    source /etc/profile

      啟(qi)動jboss,注意最後的&符(fu)號,待啟(qi)動完(wan)成再運行“exit”

    sh /usr/java/jboss-as-7.1.1.Final/bin/standalone.sh &exit

      這樣jboss就運行在後台了,以下(xia)命令查看jboss進程並關閉

    ps -efgrep jbosskill -9 進程號

    血战棋牌官网

      創建(jian)目錄,然(ran)後在該目錄下(xia)創建(jian)module.xml

    mkdir -p /usr/java/jboss-as-7.1.1.Final/modules/com/mysql/maincd /usr/java/jboss-as-7.1.1.Final/modules/com/mysql/mainvi module.xml

      module.xml內容如下(xia)

    <?xml version='1.0' encoding='UTF-8'?><module xmlns='urn:jboss:module:1.0' name='com.mysql'><resources><resource-root path='mysql-connector-java-5.1.27.jar'/></resources><dependencies><module name='javax.api'/><module name='javax.transaction.api'/></dependencies></module>

      下(xia)載mysql的驅動包mysql-connector-java-5.1.27.jar,放在/usr/file目錄,然(ran)後拷貝(bei)到當前(qian)目錄

    cp /usr/file/mysql-connector-java-5.1.27.jar ./

      打開新(xin)的shell窗口(kou),運行

    sh /usr/java/jboss-as-7.1.1.Final/bin/jboss-cli.sh -c

      如果(guo)是“disconnect”狀態,先(xian)輸入“connect”,多回車幾次後,運行下(xia)面命令

    /subsystem=datasources/jdbc-driver=com.mysql.jdbc.Driver:add(driver-name=com.mysql.jdbc.Driver,driver-class-name=com.mysql.jdbc.Driver,driver-module-name=com.mysql,driver-xa-datasource-class-name=com.mysql.jdbc.jdbc.jdbc2.optional.MysqlXADataSource):reload

    血战棋牌官网

      從ejbca官方網站下(xia)載ejbca安(an)裝(zhuang)包︰ejbca_ce_6_3_1_1.zip,放在/usr/file目錄,解壓,準備修改配(pei)置

    unzip /usr/file/ejbca_ce_6_3_1_1.zip -d /usr/javacd /usr/javamv ejbca_ce_6_3_1_1 ejbca-ce-6.3.1.1cd /usr/java/ejbca-ce-6.3.1.1/conf/

      1、修改ejbca.properties

    mv ejbca.properties.sample ejbca.propertiesvi ejbca.properties

      修改如下(xia)內容

    appserver.home=/usr/java/jboss-as-7.1.1.Finalappserver.type=jboss

      2、修改database.properties

    mv database.properties.sample database.propertiesvi database.properties

      修改如下(xia)內容

    # dataSourcedatasource.jndi-name=jboss/datasources/MySqlDS# mysql infodatabase.name=mysqldatabase.url=jdbc:mysql://127.0.0.1:3306/ejbca?characterEncoding=UTF-8database.driver=com.mysql.jdbc.Driverdatabase.username=rootdatabase.password=root

      3、修改install.properties

    mv install.properties.sample install.propertiesvi install.properties

      修改如下(xia)內容

    #設置ca名稱ca.name=test#設置ca信息(xi)ca.dn=CN=test,O=test,C=cn

      4、修改cesecore.properties、jaxws.properties,不需要(yao)修改內容

    mv cesecore.properties.sample cesecore.propertiesmv jaxws.properties.sample jaxws.properties

      5、修改web.properties

    mv web.properties.sample web.propertiesvi web.properties

      修改如下(xia)內容

    #密碼最好6位superadmin.password=123456superadmin.cn=superadminhttpsserver.hostname=ca.test.comhttpsserver.dn=CN=${httpsserver.hostname},O=test,C=cn

    血战棋牌官网

      首先(xian),在配(pei)置的mysql中(zhong)xie)唇jian)“ejbca”數(shu)據庫,編碼“utf-8”,然(ran)後正式用ant構建(jian)ejbca並安(an)裝(zhuang)到jboss

    cd /usr/java/ejbca-ce-6.3.1.1ant clean deployant installant deploy-keystore

      deploy用ant部署,install生(sheng)成證書,deploy-keystore將證書部署到jboss,前(qian)兩步所需時間較(jiao)長,過程中(zhong)如需輸入,請直接回車

    血战棋牌官网

      打開新(xin)的shell窗口(kou),運行

    sh /usr/java/jboss-as-7.1.1.Final/bin/jboss-cli.sh -c

      如果(guo)是“disconnect”狀態,運行“connect”,多回車幾次,準備運行下(xia)面4部分(fen)配(pei)置

      第(di)一(yi)部分(fen)(配(pei)置任意主機可(ke)訪問)

    /interface=http:add(inet-address='0.0.0.0')/interface=httpspub:add(inet-address='0.0.0.0')/interface=httpspriv:add(inet-address='0.0.0.0')/socket-binding-group=standard-sockets/socket-binding=http:add(port='8080',interface='http')/subsystem=undertow/server=default-server/http-listener=http:add(socket-binding=http)/subsystem=undertow/server=default-server/http-listener=http:write-attribute(name=redirect-socket, value='httpspriv'):reload

      第(di)二部分(fen)(配(pei)置證書)

    /core-service=management/security-realm=SSLRealm:add()/core-service=management/security-realm=SSLRealm/server-identity=ssl:add(keystore-path='${jboss.server.config.dir}/keystore/keystore.jks', keystore-password='serverpwd', alias='prod-ica1')/core-service=management/security-realm=SSLRealm/authentication=truststore:add(keystore-path='${jboss.server.config.dir}/keystore/truststore.jks', keystore-password='changeit')/socket-binding-group=standard-sockets/socket-binding=httpspriv:add(port='8443',interface='httpspriv')/socket-binding-group=standard-sockets/socket-binding=httpspub:add(port='8442', interface='httpspub'):reload

      第(di)三部分(fen)(配(pei)置ssl)

    /subsystem=undertow/server=default-server/https-listener=httpspriv:add(socket-binding=httpspriv, security-realm='SSLRealm', verify-client=REQUIRED)/subsystem=undertow/server=default-server/https-listener=httpspub:add(socket-binding=httpspub, security-realm='SSLRealm'):reload

      第(di)四部分(fen)(配(pei)置web service)

    /system-property=org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH:add(value=true)/system-property=org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH:add(value=true)/system-property=org.apache.catalina.connector.URI_ENCODING:add(value='UTF-8')/system-property=org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING:add(value=true)/subsystem=webservices:write-attribute(name=wsdl-host, value=jbossws.undefined.host)/subsystem=webservices:write-attribute(name=modify-wsdl-address, value=true):reload

    使用ejbca管理數(shu)字(zi)zhong)?/h4>

      ejbca安(an)裝(zhuang)完(wan)成後,我們(men)就可(ke)以使用它管理數(shu)字(zi)zhong)?榱耍 偕璋an)裝(zhuang)ejbca的服務(wu)器地址為(wei)︰172.17.210.124,我們(men)在windows系統下(xia)先(xian)配(pei)置一(yi)個hosts,編輯“C:WindowsSystem32driversetc”目錄下(xia)的hosts文件,加入一(yi)行

    172.17.210.124 ca.test.com

      然(ran)後拷貝(bei)ejbca服務(wu)器“/usr/java/ejbca-ce-6.3.1.1/p12/”目錄下(xia)的superadmin.p12文件到windows系統,雙擊該文件開始(shi)ji)滄zhuang),默認密碼是“ejbca”,如果(guo)配(pei)置過程中(zhong)修改過,請使用修改過的密碼如“123456”

      ejbca系統提供了兩個界面

      管理員界面(需要(yao)證書,使用剛才安(an)裝(zhuang)的superadmin證書)

    https://ca.test.com:8443/ejbca/adminweb/

      用戶界面

    http://ca.test.com:8080/ejbca/

      弄好了超級管理員證書之(zhi)後,我們(men)開始(shi)管理數(shu)字(zi)zhong)? 桑/p>

    血战棋牌官网

      數(shu)字(zi)zhong)?槭巧矸萑現?腦(nao)靨澹 矸萑現?畝韻缶褪ldquo;用戶”,數(shu)字(zi)zhong)? ldquo;用戶”的mu)拘畔xi),就想(xiang)身份證包含了你的姓名等ran)拘畔xi)一(yi)樣,注冊過程即是你想(xiang)ejbca提交個人基本信息(xi)

      ejbca管理員界面中(zhong),打開“RA Functions”—“Add End Entity”菜單,填寫(xie)以下(xia)“Required”列xie)蜆吹南睢/p>

      用戶模(mo)板選(xuan)擇(ze)“EMPTY”

      輸入用戶名與密碼

      Common name,如果(guo)是服務(wu)器用證書,這里(li)請填寫(xie)域名

      填寫(xie)證書信息(xi),證書模(mo)板選(xuan)擇(ze)“ENDUSER”,CA選(xuan)擇(ze)“dev”,Token選(xuan)擇(ze)“P12 file”

      最後點擊“Add”按鈕注冊

    血战棋牌官网

      注冊完(wan)用戶,自然(ran)迫不及(ji)待要(yao)弄到一(yi)個證書了,在ejbca用戶界面中(zhong),打開“Enroll”—“Create Browser Certificate”菜單

      輸入用戶名和密碼,點擊“OK”按鈕,進入下(xia)面的頁面

    “Key length”選(xuan)擇(ze)“2048 bits”;“Certificate profile”選(xuan)擇(ze)“ENDUSER”,點擊“Enroll”按鈕下(xia)載證書

    血战棋牌官网

      管理員發(fa)現用戶證書被人盜用了,好辦,吊銷(xiao)它

      ejbca管理員界面中(zhong),打開“RA Functions”—“Search End Entities”菜單。“Search end entities with status”處下(xia)拉框選(xuan)擇(ze)“All”,點擊右邊的“Search”按鈕查看用戶信息(xi)(下(xia)圖ji)÷雲qi)他列)

      勾選(xuan)需要(yao)吊銷(xiao)的用戶,點擊表格下(xia)方的“Revoke Selected”按鈕,吊銷(xiao)用戶

    血战棋牌官网

      用戶上(shang)次申請的證書到期了,要(yao)更換新(xin)的證書

      ejbca管理員界面中(zhong),打開“RA Functions”—“Search End Entities”菜單。“Search end entities with status”處下(xia)拉框選(xuan)擇(ze)“All”,點擊右邊的“Search”按鈕查看用戶信息(xi)(下(xia)圖ji)÷雲qi)他列)

      點擊需要(yao)更新(xin)證書用戶的最右邊列中(zhong)的“Edit End Entity”超鏈接,編輯用戶

      設置“Status”為(wei)“New”,點擊右邊的“Save”按鈕。然(ran)後輸入新(xin)密碼,其(qi)他項保持不變,點擊頁面最下(xia)方的“Save”按鈕保存設置

    血战棋牌官网

      ejbca作(zuo)為(wei)一(yi)個CA,有(you)它自己的根證書

      ejbca用戶界面中(zhong),打開“Retrieve”—“Fetch CA Certificates”菜單,可(ke)以下(xia)載不同格式的根證書

    血战棋牌官网

      以上(shang)方式可(ke)以管理普通用戶用的瀏覽器證書,格式為(wei)p12,tomcat服務(wu)器用的證書格式為(wei)jks,怎(zen)麼(me)申請呢?

      用戶注冊時,證書模(mo)板選(xuan)擇(ze)“SERVER”,CA選(xuan)擇(ze)“dev”,Token選(xuan)擇(ze)“JKS file”,其(qi)他項的值(zhi)不變

      下(xia)載證書時,在ejbca用戶界面中(zhong),打開“Enroll”—“Create Keystore”菜單,輸入用戶名與密碼,進入下(xia)面的頁面

      “Key length”選(xuan)擇(ze)“2048 bits”;“Certificate profile”選(xuan)擇(ze)“SERVER”,點擊“Enroll”按鈕下(xia)載證書

      其(qi)他服務(wu)器證書格式大同小(xiao)異,相信你可(ke)以摸(mo)索出來!

    使用web service構建(jian)自己的CA系統

      ejbca系統雖然(ran)安(an)裝(zhuang)好了,也可(ke)以管理數(shu)字(zi)zhong)?椋  牽 頤men)所有(you)的操作(zuo)都在ejbca提供的界面中(zhong)執行,先(xian)不說全部是英文mo) ??li)面很(hen)多配(pei)置項就讓人眼(yan)花繚(liao)亂,很(hen)多配(pei)置項要(yao)麼(me)是固(gu)定的mo) yao)麼(me)是不需要(yao)的mo) 虼耍 詈俠淼淖齜ㄊ竊jbca之(zhi)上(shang)構建(jian)一(yi)個中(zhong)間層,用戶訪問中(zhong)間層提供的證書管理服務(wu),中(zhong)間層的服務(wu)則使用ejbca實(shi)現,正好ejbca提供了完(wan)整的web service接口(kou)

      中(zhong)間層只(zhi)需要(yao)提供數(shu)字(zi)zhong)?櫚淖 帷 xia)載、吊銷(xiao)、更新(xin)即可(ke),更多的功(gong)能當然(ran)也可(ke)以實(shi)現,看具(ju)體需求了,下(xia)面介紹這個中(zhong)間層的mu)臼shi)現過程

    血战棋牌官网

      ejbca提供的web service接口(kou)需要(yao)證書認證,官方源碼給出的例子中(zhong)使用的就是superadmin超級管理員的證書,但格式是jks,因此我們(men)需要(yao)弄到superadmin.jks證書,通過工具(ju)轉換是可(ke)以的mo) jbca可(ke)以直接生(sheng)成

      對superadmin用戶執行更新(xin)操作(zuo),保存之(zhi)前(qian),修改下(xia)面項的值(zhi)為(wei)“JKS file”

      按照下(xia)載普通用戶證書的步驟下(xia)載superadmin的jks格式證書

    血战棋牌官网

      有(you)了superadmin.jks證書,我們(men)就可(ke)以用它來連接web service服務(wu)了,但是,必須將web service所需的jar包添加到工程中(zhong),這些(xie)jar包是下(xia)面兩個目錄下(xia)的所有(you)jar

    /usr/java/ejbca-ce-6.3.1.1/dist/ejbca-ws-cli/lib/usr/java/ejbca-ce-6.3.1.1/dist/ejbca-ws-cli

      然(ran)後在代碼中(zhong)初始(shi)化web service連接

    public void init() {if (!new File(certPath).exists()) return;CryptoProviderTools.installBCProvider();System.setProperty('javax.net.ssl.trustStore', 'd:/superadmin.jks');System.setProperty('javax.net.ssl.trustStorePassword', '123456');System.setProperty('javax.net.ssl.keyStore', 'd:/superadmin.jks');System.setProperty('javax.net.ssl.keyStorePassword', '123456');QName qname = new QName('http://ws.protocol.core.ejbca.org/', 'EjbcaWSService');try {EjbcaWSService service = new EjbcaWSService(new URL('https://ca.test.com:8443/ejbca/ejbcaws/ejbcaws?wsdl'), qname);EjbcaWS ejbcaWS = service.getEjbcaWSPort();} catch (Exception e) {}}

      注意︰連接地址fen)荒蓯怯蠣 飧 蠣前(qian)滄zhuang)ejbca時為(wei)ejbca服務(wu)器指定的mo) 粵 jbca提供的web service接口(kou)服務(wu)的mu)饕yao)配(pei)置hosts

    172.17.210.124 ca.test.com

      初始(shi)化的目的是拿到EjbcaWS對象的實(shi)例,接下(xia)來的數(shu)字(zi)zhong)?櫚淖 帷 xia)載等服務(wu)均(jun)基于它

    血战棋牌官网

      查看用戶是否已(yi)經注冊

    private boolean isExist(String username) throws Exception {UserMatch usermatch = new UserMatch();usermatch.setMatchwith(UserMatch.MATCH_WITH_USERNAME);usermatch.setMatchtype(UserMatch.MATCH_TYPE_EQUALS);usermatch.setMatchvalue(username);try {List<UserDataVOWS> users = ejbcaWS.findUser(usermatch);if (users != null && users.size() > 0) {return true;} else {return false;}} catch (Exception e) {throw new Exception('檢查用戶 ' + username() + ' 是否存在時出錯︰' + e.getMessage());}}

      用戶注冊與更新(xin),用的都ji)ditUser()方法,因此要(yao)先(xian)判斷是否存在

    public void editUser() throws Exception {UserDataVOWS userData = new UserDataVOWS();userData.setUsername('testname');//用戶名userData.setPassword('123456');//密碼userData.setClearPwd(false);//默認userData.setSubjectDN('CN=' + 'testname'+ ',OU=' + 'testou'+ ',O=' + 'testo'+ ',C=cn'+ ',telephoneNumber=' + '1234567890');//設置唯一(yi)甄別名String pattern = 'yyyy-MM-dd HH:mm:ssZZ'; // ISO 8601標準ji)奔涓袷serData.setStartTime(DateFormatUtils.format(new Date(),pattern));//證書有(you)效(xiao)起始(shi)日期userData.setEndTime(DateFormatUtils.format(DateUtils.addDays(new Date(), 100), pattern));//結束日期userData.setCaName('test');//ca名稱,ejbca的名稱userData.setSubjectAltName(null);userData.setEmail('test@test.com');//郵(you)shi)?serData.setStatus(UserDataVOWS.STATUS_NEW);//狀態為(wei)newuserData.setTokenType(UserDataVOWS.TOKEN_TYPE_P12);//設置p12格式證書userData.setEndEntityProfileName('user');//終(zhong)端(duan)實(shi)體模(mo)板userData.setCertificateProfileName('user');//證書模(mo)板try {ejbcaWS.editUser(userData);} catch (Exception e) {throw new Exception(e.getMessage());}}

      代碼中(zhong)有(you)幾處值(zhi)得注意的mo) zhong)端(duan)實(shi)體模(mo)板“user”和證書模(mo)板“user”需要(yao)在ejbca管理員界面中(zhong)配(pei)置,並且終(zhong)端(duan)實(shi)體模(mo)板“user”中(zhong)要(yao)配(pei)置開啟(qi)“SubjectDN”的屬性如CN、OU、O、C、telephoneNumber等,還要(yao)允許修改startTime和endTime

      吊銷(xiao)證書

    public void revoke(String username) throws ServiceException {try {ejbcaWS.revokeUser(username, RevokedCertInfo.REVOCATION_REASON_UNSPECIFIED, false);} catch (Exception e) {}}

      創建(jian)證書

    private void createCert(String username, String password, String path) throws Exception {FileOutputStream fileOutputStream = null;try {// 創建(jian)證書文件KeyStore ksenv = ejbcaWS.pkcs12Req(username, password, null, '2048', AlgorithmConstants.KEYALGORITHM_RSA);java.security.KeyStore ks = KeyStoreHelper.getKeyStore(ksenv.getKeystoreData(), 'PKCS12', password);fileOutputStream = new FileOutputStream(path + File.separator + username + '.p12');ks.store(fileOutputStream, password.toCharArray());// 創建(jian)密碼文件File pwdFile = new File(path + File.separator + username + '.pwd');pwdFile.createNewFile();BufferedWriter out = new BufferedWriter(new FileWriter(pwdFile));out.write(password);out.flush();out.close();} catch (Exception e) {throw new Exception('用戶 ' + username + ' 證書創建(jian)失敗︰' + e.getMessage());} finally {if (fileOutputStream != null) {try {fileOutputStream.close();} catch (IOException e) {}}}}

      證書創建(jian)在服務(wu)器上(shang),用戶調(diao)用下(xia)載證書的接口(kou)服務(wu),應該返回一(yi)個下(xia)載地址,這里(li)介紹用nginx作(zuo)為(wei)文件下(xia)載服務(wu)器,參考http://www.cnblogs.com/ywlaker/p/6129872.html一(yi)文介紹的關于nginx的部分(fen)

      到此為(wei)止,ejbca構建(jian)的ca系統已(yi)經完(wan)成,當然(ran),上(shang)述只(zhi)是核心代碼,怎(zen)麼(me)運行xiao) 渴鵓筒喚檣芰耍 xia)面簡單介紹https基本原(yuan)理與數(shu)字(zi)zhong)?櫚氖褂/p>

    https基本原(yuan)理與數(shu)字(zi)zhong)?櫚氖褂/h4>

      首先(xian),介紹下(xia)密碼學的mu)局 叮 頤men)從下(xia)面的加密通信模(mo)型(xing)開始(shi)

      我向朋友發(fa)送一(yi)條(tiao)消息(xi)“有(you)時間一(yi)起吃飯(fan)嗎(ma)”,實(shi)際(ji)在網絡中(zhong)xie)chuan)輸的是加密後的數(shu)據,而(er)不是原(yuan)文mo) zhi)是加密和解密過程對我和朋友是透明的

    血战棋牌官网

      上(shang)述通信過程中(zhong),如果(guo)加密與解密使用相同的密鑰,稱為(wei)對稱加密,如果(guo)使用不同的密鑰,稱為(wei)非對稱加密

      對稱加密的特點是速度快,可(ke)加密的數(shu)據量大;huan)嵌猿萍用艿奶氐閌撬俁嚷 虼酥zhi)用來加密少量數(shu)據,但極難破解

      非對稱加密過程中(zhong)使用的兩個不同的密鑰,一(yi)個稱為(wei)“私鑰”,一(yi)個稱為(wei)“公鑰”,它們(men)一(yi)一(yi)對應,稱為(wei)“密鑰對”,“公鑰”可(ke)以給任何人使用,但“私鑰”必須自己保持,一(yi)旦“私鑰”泄露,這個密鑰對就應該被拋棄

      密鑰對有(you)兩個非qian)Vzhong)要(yao)的特點︰1、“私鑰”可(ke)以導出“公鑰”,但“公鑰”無法導出“私鑰”;2、經“私鑰”加密的內容只(zhi)能由“公鑰”解密,經“公鑰”加密的內容也只(zhi)能由“私鑰”解密。

      這兩個特點有(you)兩個重(zhong)要(yao)用途︰1、“私鑰”持有(you)者用“私鑰”加密內容,發(fa)送給“公鑰”持有(you)者解密,驗證“私鑰”持有(you)者的身份。因為(wei)“公鑰”能解密的內容,只(zhi)能是由“私鑰”加密的mo)、“公鑰”持有(you)者用“公鑰”加密內容,發(fa)送給“私鑰”持有(you)者解密,保證內容安(an)全。因為(wei)只(zhi)有(you)“私鑰”能解密,即使內容被截獲,截獲者也無法知道(dao)內容是什麼(me)

    2、數(shu)字(zi)zhong)?/h3>

      數(shu)字(zi)zhong)?槭且yi)個文件,包含了使用者的身份信息(xi)、以及(ji)權威機構(CA)的數(shu)字(zi)簽名,就向我們(men)的居民身份證一(yi)樣,數(shu)字(zi)zhong)?槭ldquo;網絡身份證”,用于驗證互聯網上(shang)證書持有(you)者的身份

      頒發(fa)數(shu)字(zi)zhong)?櫚幕(mu)菇A,全世界只(zhi)有(you)少數(shu)權威的CA,因為(wei)頒發(fa)出去(qu)的證書它們(men)是要(yao)負法律責任的mo) 韻蛩men)申請證書也要(yao)繳(jiao)費,我們(men)自己搭建(jian)的ejbca頒發(fa)的證書只(zhi)適合在企業內部使用,這個CA是沒有(you)權利向互聯網上(shang)其(qi)他商業公司(si)頒發(fa)證書的

      有(you)了數(shu)字(zi)zhong)?椋 zhi)要(yao)配(pei)置服務(wu)開啟(qi)https就可(ke)以使用數(shu)字(zi)zhong)?榱/p>

      https對于數(shu)字(zi)zhong)?櫚娜現?ldquo;單向認證”與“雙向認證”,“單向認證”只(zhi)由客戶端(duan)驗證服務(wu)器,“雙向認證”則兩者相互驗證,只(zhi)要(yao)驗證不通過,通信就自動中(zhong)斷,下(xia)面介紹通信的流程以及(ji)如何在tomcat中(zhong)配(pei)置

    血战棋牌官网

      “單向認證”的兩個實(shi)體

      “單向認證”的流程如下(xia)圖

      簡要(yao)說明如下(xia)

    客戶端(duan)訪問服務(wu)器服務(wu)器響應客戶端(duan),發(fa)送服務(wu)器證書給客戶端(duan)客戶端(duan)查詢“受信任根證書頒發(fa)機構”,驗證服務(wu)器證書客戶端(duan)驗證完(wan)服務(wu)器證書,生(sheng)成“密鑰對”及(ji)會話密鑰,與服務(wu)器協商會話密鑰會話密鑰協商完(wan)成,開始(shi)ji)踩 用芡ㄐ/pre>

      tomcat開啟(qi)https單向認證的配(pei)置

    <Connector port='8443' protocol='org.apache.coyote.http11.Http11Protocol' maxThreads='150' SSLEnabled='true' scheme='https' secure='true' clientAuth='false' sslProtocol='TLS' keystoreFile='D:omcat.jks' keystorePass='123456' />

    血战棋牌官网

      “雙向認證”的兩個實(shi)體

      “雙向認證”的流程如下(xia)圖

      簡要(yao)說明如下(xia)

    客戶端(duan)訪問服務(wu)器服務(wu)器響應客戶端(duan),發(fa)送服務(wu)器證書給客戶端(duan)客戶端(duan)查詢“受信任根證書頒發(fa)機構”,驗證服務(wu)器證書驗證完(wan)服務(wu)器證書,客戶端(duan)發(fa)送客戶端(duan)證書給服務(wu)器服務(wu)器查詢“信任庫”或(huo)通過證書鏈,驗證客戶端(duan)證書客戶端(duan)與服務(wu)器協商會話密鑰加密方案(an)客戶端(duan)與服務(wu)器協商會話密鑰會話密鑰協商完(wan)成,開始(shi)ji)踩 用芡ㄐ/pre>

      tomcat開啟(qi)https雙向認證的配(pei)置

    <Connector port='8443' protocol='org.apache.coyote.http11.Http11Protocol' maxThreads='150' SSLEnabled='true' scheme='https' secure='true' clientAuth='true' sslProtocol='TLS' keystoreFile='D:omcat.jks' keystorePass='123456' truststoreFile='D:omcat.jks' truststorePass='123456'/>
About IT165 -廣(guang)告服務(wu) -隱私jiao)/a> -版權申明 -免責條(tiao)款 -網站地圖 -網友投稿 -聯系方式
本站內容來自于互聯網,僅供用于網絡技ji)躚 學習中(zhong)請遵循相關法律法規
血战棋牌官网 | 下一页