2017-09-16 63 views
0

我的Java/Tomcat服務器的工作GoDaddy的SSL證書,包括3個文件:如何將已頒發的SSL證書安裝到hyperledger rest服務器?

  • a6d8a8b6f1b7d24b.crt
  • gdig2.crt.pem
  • gd_bundle-G2-g1.crt

這三種方法都編碼的文本文件的Base64和內容看起來像

-----BEGIN CERTIFICATE----- 
MIIFNjCCBB6gAwIBAgIJAKbYqLbxt9JLMA0GCSqGSIb3DQEBCwUAMIG0MQswCQYD 
... 
MLLO84KBeOlWOD9ShSj2OqPQiozGPPjqzuIyyWJF37s0Y/BpgJPfqHgE 
-----END CERTIFICATE----- 

gd_bundle-g2-g1.crt裏面包含多個這樣的條目。

現在,Hyperledger說明here解釋:

composer-rest-server -t -c /tmp/cert.pem -k /tmp/key.pem -p hlfv1 -n my-network -i alice1 -s suchs3cret 

這在我的情況下,一個有望成爲cert.pem和哪一個key.pem?他們需要任何轉換嗎?如果他們需要轉換,怎麼辦?這些證書適用於使用jks密鑰庫的Java框架。 Hyperledger使用Node.js和受產生錯誤像

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 
    at Error (native) 
    at Object.createSecureContext (_tls_common.js:85:17) 
    at Server (_tls_wrap.js:776:25) 
    at new Server (https.js:26:14) 
    at Object.exports.createServer (https.js:47:10) 
    at Promise.then (/home/hla/.nvm/versions/node/v6.11.2/lib/node_modules/composer-rest-server/server/server.js:148:28) 
    at process._tickCallback (internal/process/next_tick.js:109:7) 

我試圖替換文件的各種組合,但只得到錯誤信息爲止。我想我已經嘗試過所有可能的組合,所以格式很可能是錯誤的。

GoDaddy允許以各種流行的格式(Apache,Exchange,IIS,MacOS X和Tomcat準確地)導出證書,但Hyperledger顯然不在它們之間。

這也可能是有問題的,當我生成

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem 

(其中顯然key.pem也許應該是關鍵)的證書,我也得到了同樣的錯誤:

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line 

OpenSSL版本OpenSSL 1.0.2g 2016年3月1日。node --version。節點 - 版本。節點 - 版本5.4.0。

回答

1

其他服務器期待2件事情,以便能夠啓用tls。它需要私鑰和與該私鑰相關聯的公共證書。他們都需要以.pem格式。公共證書的文本以-----BEGIN CERTIFICATE-----開頭,而私鑰的文本以-----BEGIN PRIVATE KEY----- 開頭。可以使用openssl命令生成一個自簽名證書,例如其他服務器可以使用的證書。在上面給出的示例中,您實際上已經生成了一個CSR(證書請求),它是基於它生成的私鑰爲您創建證書的請求,因此它創建的csr.pem文件不是可用的證書。 CSR是您發送給認證中心以請求創建證書的內容。

+0

我是否正確理解需要通常與爲我頒發證書的供應商保持一段數據(私鑰)?這基本上意味着只有自簽名證書纔可以使用https作曲者休息服務器,或者向供應商提供他們通常不包含的額外數據? – h22

+0

我不知道供應商向您提供了什麼或者您向他們請求什麼,因此無法對此進行評論,但您的目的是爲您提供一個服務器,客戶端可以通過tls連接,而不是其他服務器連接到服務本身。由於其他服務器是此證書的所有者,因此預計所有者也將擁有關聯的私鑰,以便能夠解密由使用公共證書的客戶端發送的信息。 –

0

使用gdig2.crt.pem作爲您的證書(-c)。您需要將文件指定到您用來生成CSR的私鑰(-k)。如果您的私鑰受密碼保護,則需要在composer-rest-server/server.js中提供密碼(請查看行https.createServer({cert, key}, app);)。祝你好運。

相關問題