存在一些类似的线程,但没有一个检查答案或讨论。我正在尝试在快递js上设置https服务器,但我正在
crypto.js:100
c.context.setKey(options.key);
^
Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
我使用
生成了.csr
和.key
个文件
openssl req -nodes -newkey rsa:2048 -keyout myserver.key -out myserver.csr
一项建议是按照以下说明将.csr转换为.pem:http://silas.sewell.org/blog/2010/06/03/node-js-https-ssl-server-example/
那不起作用。
express.js docs(http://nodejs.org/api/https.html)将这两个文件显示为.pem。如果这是问题,您如何将.key文件转换为.pem?这种威胁部分有用How to get .pem file from .key and .crt files?但如果有人知道表达需要什么,我觉得这是缺失的组成部分。
我如何检查文件是否在ANSI中正确,或者如果没有则转换它们?
还有一些关于该文件是以-----BEGIN ENCRYPTED PRIVATE KEY-----
还是-----BEGIN RSA PRIVATE KEY-----
非常感谢任何帮助。
答案 0 :(得分:6)
所以我认为至少有一点术语混淆,而你所拥有的node.js示例并没有将所有内容重命名为.pem
。
以下是SSL工作原理的概述:
您生成一对公钥和私钥。出于我们的目的,前者是您的证书签名请求" (简称CSR),后者是您的私人签名密钥(只是"您的密钥")。
如果您想生成自签名证书(这对本地测试有用),您可以转身并使用您的密钥和CSR来生成证书。这个链接http://www.akadia.com/services/ssh_test_certificate.html非常明确地说明如何在基于* nix的系统上执行此操作。
出于Web浏览器的目的,SSL证书需要由受信任的机构共同签署,例如,证书颁发机构(CA)。您支付CA以共同签署您的证书,并证明您与浏览器供应商的真实性(当您的网站向浏览器提供其证书时,他们将为您的网站显示绿色挂锁)。
共同签名流程始于您将CSR上传到CA.然后,他们将获取该CSR并生成您的证书。然后,他们将为您提供一些证书,证书,根证书以及可能的一些中间证书。
然后,您需要形成一个组合证书,以证明链接到浏览器的真实性。您只是通过连接证书,然后是以根证书结尾的中间证书(按照指定的顺序)完成此操作。这种组合证书是您提交给Web服务器的。
为了使您的Web服务器能够通过SSL提供服务,您需要将您的(组合)证书作为其公共加密密钥(根据请求提供给Web浏览器)和您的私有加密密钥,以便它可以解密网络浏览器发送给它的流量。
因此。现在考虑到所有这些,您应该使用您拥有的CSR并将其提供给您的CA,并获取各种证书,将它们连接起来,然后在您的快速服务器中使用您的私钥。