如何将安装的SSL证书安装到hyperledger rest服务器?

时间:2017-09-16 10:55:40

标签: node.js ssl https hyperledger hyperledger-composer

我有Java / Tomcat服务器的GoDaddy SSL证书,包含3个文件:

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

这三个都是base64编码的文本文件,内容看起来像

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

gd_bundle-g2-g1.crt里面包含多个这样的条目。

现在,Hyperledger说明here解释了:

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)

在我的情况下哪一个应该是cert.pem,哪一个是key.pem?他们需要任何转换,如果他们这样做,怎么样?这些证书适用于使用jks密钥库的Java框架。 Hyperledger使用node.js并产生错误,如

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

我尝试用各种组合替换文件但到目前为止只收到错误消息。我想我实际上已经尝试了所有可能的组合,所以很可能格式错误。

GoDaddy允许以各种流行格式(准确地说是Apache,Exchange,IIS,MacOS X和Tomcat)导出证书,但Hyperledger显然不在它们之间。

当我使用

生成证书时,也可能会出现问题
Error: error:0906D06C:PEM routines:PEM_read_bio:no start line

(显然key.pem应该是关键),我也得到同样的错误:

M <-  gvisMotionChart(Fruits, "Fruit", "Year", options = list(width=600, height=400))
plot(M)

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

2 个答案:

答案 0 :(得分:1)

其余的服务器期待两件事,以便能够启用tls。它需要私钥和与该私钥相关联的公共证书。它们都需要采用.pem格式。公共证书的文本以-----BEGIN CERTIFICATE-----开头,而私钥的文本以-----BEGIN PRIVATE KEY-----开头 openssl命令可用于生成自签名证书,例如,其余服务器可以使用该证书。在上面给出的示例中,您实际生成了一个CSR(证书请求),它是根据它生成的私钥为您创建证书的请求,因此它创建的csr.pem文件不是可用的证书。 CSR是您发送给证书颁发机构以请求创建证书的内容。

答案 1 :(得分:0)

使用gdig2.crt.pem作为证书(-c)。您需要将文件指定为用于生成CSR的私钥(-k)。如果您的私钥受密码保护,则需要在composer-rest-server/server.js中提供密码(查找行https.createServer({cert, key}, app);)。祝你好运。