如何将已颁发的SSL证书安装到hyperledger rest服务器?
我的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。
其他服务器期待2件事情,以便能够启用tls。它需要私钥和与该私钥相关联的公共证书。他们都需要以.pem格式。公共证书的文本以-----BEGIN CERTIFICATE-----
开头,而私钥的文本以-----BEGIN PRIVATE KEY-----
开头。可以使用openssl命令生成一个自签名证书,例如其他服务器可以使用的证书。在上面给出的示例中,您实际上已经生成了一个CSR(证书请求),它是基于它生成的私钥为您创建证书的请求,因此它创建的csr.pem文件不是可用的证书。 CSR是您发送给认证中心以请求创建证书的内容。
使用gdig2.crt.pem
作为您的证书(-c
)。您需要将文件指定到您用来生成CSR的私钥(-k
)。如果您的私钥受密码保护,则需要在composer-rest-server/server.js
中提供密码(请查看行https.createServer({cert, key}, app);
)。祝你好运。
我是否正确理解需要通常与为我颁发证书的供应商保持一段数据(私钥)?这基本上意味着只有自签名证书才可以使用https作曲者休息服务器,或者向供应商提供他们通常不包含的额外数据? – h22
我不知道供应商向您提供了什么或者您向他们请求什么,因此无法对此进行评论,但您的目的是为您提供一个服务器,客户端可以通过tls连接,而不是其他服务器连接到服务本身。由于其他服务器是此证书的所有者,因此预计所有者也将拥有关联的私钥,以便能够解密由使用公共证书的客户端发送的信息。 –