一区二区三区欧美日韩-一区二区三区欧美-一区二区三区免费在线视频-一区二区三区免费在线观看-久久精品店-久久精品第一页

歡迎您光臨深圳塔燈網絡科技有限公司!
電話圖標 余先生:13699882642

網站百科

為您解碼網站建設的點點滴滴

Corda網絡的證書簽發

發表日期:2018-09 文章編輯:小燈 瀏覽次數:2188

Corda網絡準入要求

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

Corda 是一種聯盟鏈技術,聯盟鏈一般也被稱為許可鏈,這意味著每個節點都需要唯一的身份。在生產環境的網絡中,每個準入的節點都應該經過嚴格的KYC(Know Your Customer)審查流程,才能夠獲取唯一的被認可的身份。這個身份在Corda網絡中使用數字證書標識。

在技術上,一個Corda節點為了接入聯盟網絡,需要在安裝節點的時候包含兩個keystore文件和一個truststore文件。這些文件都被放置在節點的certificates/目錄下。

  1. nodekeystore.jks 存儲標識節點身份的密鑰對和數字證書(所有的數字證書都只會保存公鑰),用于實際交易的簽名;
  2. sslkeystore.jks 存儲節點的TLS密鑰對和數字證書,用于節點之間的加密通訊;
  3. truststore.jks 存儲Corda網絡中的Root CA的公鑰和數字證書,跟瀏覽器的根證書用途一致,但是除了幫助節點之間建立可信連接,還用于驗證交易對手方身份的真實性。

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

Corda doc 3.2 - Permissioning Structure

證書簽發過程

在開發模式下,即節點的配置文件 node.conf 中devMode=true,如果nodekeystore.jks和sslkeystore.jks不存在,節點啟動時會自動生成。這樣設計的初衷是為了讓開發者快速驗證,但同時也會導致對生產要求的忽視。

幾乎所有企業都有一套自己完善的證書管理機制和審批流程,所以利用現有的機制和流程加固證書安全也是一項不容忽視的任務。這也是我們選用Corda的原因之一 —— 充分利用現有的基礎設施。

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

當然更理想的情況是,Doorman(見上圖)這個服務正式上線。而事實上,Corda3.2以及預覽版的企業版Corda都還沒有Doorman服務的實現,官方文檔中還只有一套不成熟的REST接口標準。為啥說它不成熟呢?因為這個接口標準在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 簽發證書

遺憾的是,我們不太可能在開發階段直接找企業的cert部門給我簽發證書。為了盡早驗證集成企業的證書簽發體系,我們可以先模擬企業的Root CA簽發節點的證書。

創建Root CA

1. 生成私鑰

首先使用rsa算法生成3072位長度的私鑰。

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呢?因為Corda文檔中有明確的要求:

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算法要求私鑰的長度必須是3072位。

2. 刪除第一步des3算法產生的passphase

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

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

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 

當執行完這一步,當前目錄下會出現三個文件:ca.csr, ca.key, ca.pass.key。其中ca.csr文件(Certificate Signing Request)是待簽發的證書請求文件。

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

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 

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


keytool工具生成keystore和truststore文件

這里以生成Corda必需的sslkeystore.jks文件為例,Corda對此給出了幾點標準要求:

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. 創建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文檔中著重強調

  • The basic constraints extension must be set to false

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

keytool -list -v -keystore sslkeystore.jks 

2. 創建CSR

keystore文件和私鑰產生之后,就想傳統向CA機構提交申請一樣,需要準備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產生對應的sslkeystore.csr文件。

查看sslkeystore.csr中的內容,可以使用下面的命令

openssl req -in sslkeystore.csr -noout -text 

3. 從CA機構處獲取證書 用模擬的Root CA簽發證書

正如標題所示,從CA機構獲取證書是比較正式的做法。著重強調,證書的安全性非常重要。這里使用模擬的Root CA簽發只是為了驗證假設的可行性,這個假設就是Corda的證書體系可以融合企業現存的證書體系。

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 

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

4. 根證書導入ssl keystore

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

如果真的有中間CA的證書,同樣也需要導入到這個keystore文件。

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

5. ssl證書導入ssl keystore

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

注意這一步操作,如果根證書沒有事先導入,會出現下面的錯誤

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

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

此時,查看sslkeystore.jks的內容

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 

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

8. Root CA的證書導入truststore

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

keystore和truststore的文件格式是一致的,之所以劃分成keystore和truststore,只是在概念上做了區分。Truststore決定是否信任遠程的認證信息,Keystore則決定哪個認證信息可以被發送到遠端。簡而言之,truststore是CA證書的本地存儲,類似于瀏覽器中的根證書;keystore是身份和對應private key的存儲,類似服務端的ssl數字證書和private key。

9. 節點安裝證書

每個節點都需要將下面的文件拷貝到自己的證書目錄,即<workspace>/certificates/

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

于2018-09-26


參考鏈接
[1] keystore和truststore的區別


本頁內容由塔燈網絡科技有限公司通過網絡收集編輯所得,所有資料僅供用戶學習參考,本站不擁有所有權,如您認為本網頁中由涉嫌抄襲的內容,請及時與我們聯系,并提供相關證據,工作人員會在5工作日內聯系您,一經查實,本站立刻刪除侵權內容。本文鏈接:http://www.junxiaosheng.cn/20476.html
相關開發語言
 八年  行業經驗

多一份參考,總有益處

聯系深圳網站公司塔燈網絡,免費獲得網站建設方案及報價

咨詢相關問題或預約面談,可以通過以下方式與我們聯系

業務熱線:余經理:13699882642

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

  • QQ咨詢
  • 在線咨詢
  • 官方微信
  • 聯系電話
    座機0755-29185426
    手機13699882642
  • 預約上門
  • 返回頂部
主站蜘蛛池模板: 麻豆AV无码精品一区二区| 成年人在线免费观看视频网站| 欧美91精品久久久久网免费| gay台湾无套男同志xnxⅹ| 午夜免费体验30分| 美女扒开腿让男人桶个爽| 国产人A片在线乱码视频| 边做边爱免费视频| 找老女人泻火对白自拍| 亚洲精品国产乱码AV在线观看| 亲爱的妈妈6韩国电影免费观看| 久久精品男人影院| 国产精品亚洲污污网站入口| 久草色在线| 国产热久久精| 俄罗斯12x13x处| 99re久久热在这里精品| 亚洲欧洲一级| 亚洲精品6久久久久中文字幕| 日韩人妻精品久久日| 欧美日韩一二区旡码高清在线| 蜜饯1V1高H-| 榴莲黄版无限刷| 黑人性xxx| 国产制服丝袜91在线| 国产精品毛片AV久久97| 国产ts在线| 高龄熟女50P| 高清国产一区| 调教美丽的白丝袜麻麻视频| hdxxxx58丝袜连裤袜| 99久久伊人一区二区yy5099| 87影院午夜福利| 9477小游戏| bbbbbxxxxx肥胖| 啊叫大点声欠CAO的SAO贷| 宝贝乖女好紧好深好爽老师| www.亚洲天堂| 宫交拔不出来了h黑人| 国产高清视频在线观看97| 国产免费阿v精品视频网址|