国产亚洲欧美人成在线,免费视频爱爱太爽了无码,日本免费一区二区三区高清视频 ,国产真实伦对白精彩视频

歡迎您光臨深圳塔燈網(wǎng)絡(luò)科技有限公司!
電話圖標(biāo) 余先生:13699882642

網(wǎng)站百科

為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴

Corda網(wǎng)絡(luò)的證書簽發(fā)

發(fā)表日期:2018-09 文章編輯:小燈 瀏覽次數(shù):2197

Corda網(wǎng)絡(luò)準(zhǔn)入要求

https://docs.corda.net/permissioning.html

Corda 是一種聯(lián)盟鏈技術(shù),聯(lián)盟鏈一般也被稱為許可鏈,這意味著每個(gè)節(jié)點(diǎn)都需要唯一的身份。在生產(chǎn)環(huán)境的網(wǎng)絡(luò)中,每個(gè)準(zhǔn)入的節(jié)點(diǎn)都應(yīng)該經(jīng)過(guò)嚴(yán)格的KYC(Know Your Customer)審查流程,才能夠獲取唯一的被認(rèn)可的身份。這個(gè)身份在Corda網(wǎng)絡(luò)中使用數(shù)字證書標(biāo)識(shí)。

在技術(shù)上,一個(gè)Corda節(jié)點(diǎn)為了接入聯(lián)盟網(wǎng)絡(luò),需要在安裝節(jié)點(diǎn)的時(shí)候包含兩個(gè)keystore文件和一個(gè)truststore文件。這些文件都被放置在節(jié)點(diǎn)的certificates/目錄下。

  1. nodekeystore.jks 存儲(chǔ)標(biāo)識(shí)節(jié)點(diǎn)身份的密鑰對(duì)和數(shù)字證書(所有的數(shù)字證書都只會(huì)保存公鑰),用于實(shí)際交易的簽名;
  2. sslkeystore.jks 存儲(chǔ)節(jié)點(diǎn)的TLS密鑰對(duì)和數(shù)字證書,用于節(jié)點(diǎn)之間的加密通訊;
  3. truststore.jks 存儲(chǔ)Corda網(wǎng)絡(luò)中的Root CA的公鑰和數(shù)字證書,跟瀏覽器的根證書用途一致,但是除了幫助節(jié)點(diǎn)之間建立可信連接,還用于驗(yàn)證交易對(duì)手方身份的真實(shí)性。

從Corda的設(shè)計(jì)中不難看出,它的身份體系是構(gòu)建在PKI之上。其中truststore.jks代表了Root CA,nodekeystore.jks表示Node CA以及Well-Known identity,而sslkeystore.jks存儲(chǔ)了TLS certificate.

Corda doc 3.2 - Permissioning Structure

證書簽發(fā)過(guò)程

在開發(fā)模式下,即節(jié)點(diǎn)的配置文件 node.conf 中devMode=true,如果nodekeystore.jks和sslkeystore.jks不存在,節(jié)點(diǎn)啟動(dòng)時(shí)會(huì)自動(dòng)生成。這樣設(shè)計(jì)的初衷是為了讓開發(fā)者快速驗(yàn)證,但同時(shí)也會(huì)導(dǎo)致對(duì)生產(chǎn)要求的忽視。

幾乎所有企業(yè)都有一套自己完善的證書管理機(jī)制和審批流程,所以利用現(xiàn)有的機(jī)制和流程加固證書安全也是一項(xiàng)不容忽視的任務(wù)。這也是我們選用Corda的原因之一 —— 充分利用現(xiàn)有的基礎(chǔ)設(shè)施。

理想的情況下,企業(yè)的cert部門會(huì)包攬上圖中所有的任務(wù),每個(gè)節(jié)點(diǎn)需要做的事情就是提交CSR(Certificate Signing Request)文件,然后等待一封郵件,附件中包含申請(qǐng)的數(shù)字證書、中間CA(Intermediated CA)證書和根CA(Root CA)證書。

當(dāng)然更理想的情況是,Doorman(見上圖)這個(gè)服務(wù)正式上線。而事實(shí)上,Corda3.2以及預(yù)覽版的企業(yè)版Corda都還沒(méi)有Doorman服務(wù)的實(shí)現(xiàn),官方文檔中還只有一套不成熟的REST接口標(biāo)準(zhǔn)。為啥說(shuō)它不成熟呢?因?yàn)檫@個(gè)接口標(biāo)準(zhǔn)在release-M14.0還存在,但是最新的Corda3.2卻不見了蹤影。

Request method Path Description
POST /api/certificate Create new certificate request record and stored for further approval process, server will response with a request ID if the request has been accepted.
GET /api/certificate/{requestId} Retrieve certificates for requestId, the server will return HTTP 204 if request is not yet approved or HTTP 401 if it has been rejected.

模擬Root CA 簽發(fā)證書

遺憾的是,我們不太可能在開發(fā)階段直接找企業(yè)的cert部門給我簽發(fā)證書。為了盡早驗(yàn)證集成企業(yè)的證書簽發(fā)體系,我們可以先模擬企業(yè)的Root CA簽發(fā)節(jié)點(diǎn)的證書。

創(chuàng)建Root CA

1. 生成私鑰

首先使用rsa算法生成3072位長(zhǎng)度的私鑰。

openssl genrsa -des3 -passout pass:x -out ca.pass.key 3072-> Generating RSA private key, 3072 bit long modulus ....................++ ............................................................................................++ e is 65537 (0x10001) 

為什么要求私鑰的key size是3072呢?因?yàn)镃orda文檔中有明確的要求:

The root network CA, doorman CA and node CA keys, as well as the node TLS keys, must follow one of the following schemes:

  • ECDSA using the NIST P-256 curve (secp256r1)
  • RSA with 3072-bit key size

在橢圓曲線簽名算法(ECDSA)和RSA算法兩者選擇其一,而RSA算法要求私鑰的長(zhǎng)度必須是3072位。

2. 刪除第一步des3算法產(chǎn)生的passphase

openssl rsa -passin pass:x -in ca.pass.key -out ca.key-> writing RSA key 

上面生成的私鑰是有passphase的,這一步就是將原來(lái)的passphasepass:xca.pass.key文件中去除,得到ca.key文件,方便接下來(lái)直接使用明文的私鑰。

3. 生成CSR文件

openssl req -new -key ca.key -out ca.csr \ -subj '/C=US/ST=California/L=Los Angeles/O=Mystic Coders, LLC/ \ OU=Information Technology/CN=ws.mysticcoders.com \ emailAddress=fakeemail AT gmail DOT com/ \ subjectAltName=DNS.1=endpoint.com'->Subject Attribute OU has no known NID, skipped Subject Attribute subjectAltName has no known NID, skipped 

當(dāng)執(zhí)行完這一步,當(dāng)前目錄下會(huì)出現(xiàn)三個(gè)文件:ca.csr, ca.key, ca.pass.key。其中ca.csr文件(Certificate Signing Request)是待簽發(fā)的證書請(qǐng)求文件。

4. 自簽發(fā)證書(使用自己的私鑰簽發(fā)自己的證書)

openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt-> Signature ok subject=/C=US/ST=California/L=Los Angeles/O=Mystic Coders, LLC/CN=ws.mysticcoders.com \x0AemailAddress=fakeemail AT gmail DOT com Getting Private key 

這步操作結(jié)束之后,ca.crt文件就順利生成,它代表了Root CA的證書。我們接下來(lái)就能利用這個(gè)證書及其私鑰簽發(fā)SSL證書和Node Well-Known identity 證書。


keytool工具生成keystore和truststore文件

這里以生成Corda必需的sslkeystore.jks文件為例,Corda對(duì)此給出了幾點(diǎn)標(biāo)準(zhǔn)要求:

Creating the node TLS keystores

  1. For each node, create a new keypair
  2. Create a certificate for the keypair signed with the node CA key. The basic constraints extension must be set to false
  3. Create a new Java keystore named sslkeystore.jks and store the key and certificates in it using the alias cordaclienttls
  • The node will store this keystore locally to sign its TLS certificates

1. 創(chuàng)建keystore文件及其私鑰

keytool -genkeypair -alias cordaclienttls -keyalg RSA-ext BC=ca:FALSE -keysize 3072 -keystore sslkeystore.jks -storepass changeit -v-> ... Generating 3,072 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 90 days for: CN=Qian, OU=Software engineer, O=ThoughtWorks, L=Chengdu, ST=Sichuan, C=CN Enter key password for <cordaclienttls> (RETURN if same as keystore password): [Storing sslkeystore.jks] 

特別要注意的是-ext BC=ca:FALSE,Corda文檔中著重強(qiáng)調(diào)

  • The basic constraints extension must be set to false

查看sslkeystore.jks,可以使用下面的命令

keytool -list -v -keystore sslkeystore.jks 

2. 創(chuàng)建CSR

keystore文件和私鑰產(chǎn)生之后,就想傳統(tǒng)向CA機(jī)構(gòu)提交申請(qǐng)一樣,需要準(zhǔn)備CSR文件。

keytool -certreq -alias cordaclienttls -keystore sslkeystore.jks -file sslkeystore.csr -v-> Enter keystore password: Certification request stored in file <sslkeystore.csr> Submit this to your CA 

keytool的這條命令指定sslkeystore.jks文件中別名為cordaclienttls的entry產(chǎn)生對(duì)應(yīng)的sslkeystore.csr文件。

查看sslkeystore.csr中的內(nèi)容,可以使用下面的命令

openssl req -in sslkeystore.csr -noout -text 

3. 從CA機(jī)構(gòu)處獲取證書 用模擬的Root CA簽發(fā)證書

正如標(biāo)題所示,從CA機(jī)構(gòu)獲取證書是比較正式的做法。著重強(qiáng)調(diào),證書的安全性非常重要。這里使用模擬的Root CA簽發(fā)只是為了驗(yàn)證假設(shè)的可行性,這個(gè)假設(shè)就是Corda的證書體系可以融合企業(yè)現(xiàn)存的證書體系。

openssl x509 -req -days 365 -in sslkeystore.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out sslkeystore.crt-> Signature ok subject=/C=CN/ST=Sichuan/L=Chengdu/O=ThoughtWorks/OU=Software sector/CN=Yan Qian Getting CA Private Key 

根證書一般不會(huì)直接用于簽發(fā)數(shù)字證書的,總會(huì)存在Intermediate CA給使用者簽發(fā),這樣做的目的是保證根證書的安全??偟膩?lái)說(shuō),使用頻率越少,出現(xiàn)失誤的可能性就越小。而且從證書的信任鏈角度考慮,根證書是PKI體系信任的源頭,一旦遭遇破壞,整個(gè)信任體系就得崩潰,后果很嚴(yán)重。

4. 根證書導(dǎo)入ssl keystore

keytool -importcert -trustcacerts -alias cordarootca -file ca.crt -keystore sslkeystore.jks 

如果真的有中間CA的證書,同樣也需要導(dǎo)入到這個(gè)keystore文件。

keytool -importcert -trustcacerts -alias cordaintermediateca -file Intermediateca.crt -keystore sslkeystore.jks 

5. ssl證書導(dǎo)入ssl keystore

keytool -importcert -alias cordaclienttls -file sslkeystore.crt -keystore sslkeystore.jks 

注意這一步操作,如果根證書沒(méi)有事先導(dǎo)入,會(huì)出現(xiàn)下面的錯(cuò)誤

Enter keystore password: keytool error: java.lang.Exception: Public keys in reply and keystore don't match 

解決方法是提前導(dǎo)入Root CA和Intermediate CA(如果有的話)的證書。

此時(shí),查看sslkeystore.jks的內(nèi)容

keytool -list -v -keystore sslkeystore.jks-> Enter keystore password: Keystore type: JKS Keystore provider: SUNYour keystore contains 2 entriesAlias name: cordaclienttls Creation date: Sep 26, 2018 Entry type: PrivateKeyEntry Certificate chain length: 2 Certificate[1]: Owner: CN=Yan Qian, OU=Software sector, O=ThoughtWorks, L=Chengdu, ST=Sichuan, C=CN Issuer: CN="ws.mysticcoders.com ... Certificate[2]: Owner: CN="ws.mysticcoders.com ... Alias name: cordarootca Creation date: Sep 27, 2018 Entry type: trustedCertEntry 

這個(gè)文件包含了兩個(gè)entry,一個(gè)是cordaclienttls,另一個(gè)就是cordarootca。注意其中cordaclienttls的Entry type是PrivateKeyEntry,而cordarootca的Entry type是trustedCertEntry。keystore文件除了存儲(chǔ)證書之外,也可以存儲(chǔ)私鑰(這也是很多人詬病Corda的地方,私鑰理應(yīng)離線存儲(chǔ),不過(guò)Corda官方也有自己的解釋)。另外,cordaclienttls的證書鏈長(zhǎng)度為2,從自己的證書上溯到根證書。

8. Root CA的證書導(dǎo)入truststore

keytool -importcert -trustcacerts -alias cordarootca -file ca.crt -keystore truststore.jks 

keystore和truststore的文件格式是一致的,之所以劃分成keystore和truststore,只是在概念上做了區(qū)分。Truststore決定是否信任遠(yuǎn)程的認(rèn)證信息,Keystore則決定哪個(gè)認(rèn)證信息可以被發(fā)送到遠(yuǎn)端。簡(jiǎn)而言之,truststore是CA證書的本地存儲(chǔ),類似于瀏覽器中的根證書;keystore是身份和對(duì)應(yīng)private key的存儲(chǔ),類似服務(wù)端的ssl數(shù)字證書和private key。

9. 節(jié)點(diǎn)安裝證書

每個(gè)節(jié)點(diǎn)都需要將下面的文件拷貝到自己的證書目錄,即<workspace>/certificates/

  1. nodekeystore.jks,和sslkeystore的生成過(guò)程類似,可以參考Corda文檔,改變個(gè)別配置項(xiàng),比如:alias, -ext BC=ca:TRUE
  2. sslkeystore.jks
  3. Root CA truststore.jks

于2018-09-26


參考鏈接
[1] keystore和truststore的區(qū)別


本頁(yè)內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過(guò)網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶學(xué)習(xí)參考,本站不擁有所有權(quán),如您認(rèn)為本網(wǎng)頁(yè)中由涉嫌抄襲的內(nèi)容,請(qǐng)及時(shí)與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會(huì)在5工作日內(nèi)聯(lián)系您,一經(jīng)查實(shí),本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://jstctz.cn/20476.html
相關(guān)開發(fā)語(yǔ)言
 八年  行業(yè)經(jīng)驗(yàn)

多一份參考,總有益處

聯(lián)系深圳網(wǎng)站公司塔燈網(wǎng)絡(luò),免費(fèi)獲得網(wǎng)站建設(shè)方案及報(bào)價(jià)

咨詢相關(guān)問(wèn)題或預(yù)約面談,可以通過(guò)以下方式與我們聯(lián)系

業(yè)務(wù)熱線:余經(jīng)理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.    

  • QQ咨詢
  • 在線咨詢
  • 官方微信
  • 聯(lián)系電話
    座機(jī)0755-29185426
    手機(jī)13699882642
  • 預(yù)約上門
  • 返回頂部