如何将已颁发的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是您发送给认证中心以请求创建证书的内容。

+0

我是否正确理解需要通常与为我颁发证书的供应商保持一段数据(私钥)?这基本上意味着只有自签名证书才可以使用https作曲者休息服务器,或者向供应商提供他们通常不包含的额外数据? – h22

+0

我不知道供应商向您提供了什么或者您向他们请求什么,因此无法对此进行评论,但您的目的是为您提供一个服务器,客户端可以通过tls连接,而不是其他服务器连接到服务本身。由于其他服务器是此证书的所有者,因此预计所有者也将拥有关联的私钥,以便能够解密由使用公共证书的客户端发送的信息。 –

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