【问题标题】:Using private key from GoDaddy on Nodejs在 Nodejs 上使用 GoDaddy 的私钥
【发布时间】:2019-04-03 16:39:28
【问题描述】:

我们在godaddy上购买了域名和SSL证书,但我们的服务器不在GoDaddy上。我们在我们的服务器中运行 Lampp 和 NodeJS,并且我们正在尝试使用两者设置 SSL。兰普没有问题。 godaddy 的私钥和证书正在运行。但是当我用 NodeJS 尝试相同的文件时。它失败了。

这是我的 js 脚本:

ssl = {
key: fs.readFileSync("./key.pem",'utf8'),
cert: fs.readFileSync("./cert.crt",'utf8'),
ca: [fs.readFileSync('./g1.crt','utf8'), 
fs.readFileSync('./g2.crt','utf8'), fs.readFileSync('./g3.crt','utf8')]
};
server = require('https').createServer(ssl, app);

这是错误

_tls_common.js:104
  c.context.setKey(options.key, options.passphrase);
            ^

  Error: error:0909006C:PEM routines:get_name:no start line

经过一番谷歌搜索,我尝试了几种解决方案:添加“utf8”,拆分 gd 包,使用 nodepad++ 修复代码。他们都没有帮助。

但是,nodejs 可以使用我的自签名密钥和证书文件。所以我想问一下。我是否错误地生成了我的密钥?我应该在本地手动生成私钥/CSR 并在 GoDaddy 上申请新证书吗?还是我的代码有问题?

【问题讨论】:

  • 真的是TongueEM 而不是PEM?这真的很奇怪。确保您的文件实际上是 PEM 格式:一个 -----BEGIN(类型)----- 行,一些 base64 行的宽度不超过 76 个字符,以及一个 -----END(类型)- - - 线。行必须有终止 LF 或 CRLF。确保私钥文件的类型是有效的私钥类型。如果这些文件已经或曾经在 Windows 上,请确保它们的开头没有“BOM”(字节顺序标记)。 (使用十六进制编辑器或类似工具;BOM 在记事本等普通文本编辑器中是不可见的。)
  • 如果我错了,错误是这个Error: error:0909006C:PEM routines:get_name:no start line

标签: javascript node.js ssl vps


【解决方案1】:

此错误消息表示这些文件错误、损坏或被其他OS Enviroments 请求。所以我们有一些选择。

  1. 关于代码的解决方案(导入文件系统库并使用完整路径)。
let yourKey = fs.readFileSync('./folderOne/folderTwo/initial.key').toString();
let yourCertificate = fs.readFileSync('./folderOne/folderTwo/certificate.crt').toString();
var credentials = { key: yourKey, cert: yourCertificate };
  1. 根据操作系统兼容性请求的解决方案:
    • 请求新证书,并附上有关操作系统(Linux、Windows 等)为发送给您的提供商发送初始密钥的说明。

重要提示:您只需要 .crt 文件和私钥。

【讨论】:

  • 谢谢,使用选项 2
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2017-03-03
  • 2011-10-08
  • 2017-08-29
相关资源
最近更新 更多