我有Java / Tomcat服务器的GoDaddy SSL证书,包含3个文件:
这三个都是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。
答案 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);
)。祝你好运。