【发布时间】:2021-01-19 12:09:54
【问题描述】:
我使用 Let's Encrypt 自动创建了一个 ssl 证书。
现在我正在尝试使用它们来创建一个带有 node.js 的 https 服务器
var https = require("https");
global.fs = require("fs");
var certContent = fs.readFileSync("/etc/letsencrypt/csr/0000_csr-certbot.pem", "utf8");
var keysContent = fs.readFileSync("/etc/letsencrypt/keys/0000_key-certbot.pem", "utf8");
console.log("Cert content:", certContent, keysContent);
var server = https.createServer(
{
cert:certContent,
key: keysContent
},
function(request, response)
{
});
在创建服务器调用时,它给出了这个错误:
_tls_common.js:109
c.context.setCert(cert);
^
Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
at Object.createSecureContext (_tls_common.js:109:17)
at Server (_tls_wrap.js:853:25)
at new Server (https.js:60:14)
at Object.createServer (https.js:81:10)
at Object.<anonymous> (/home/foo/public_html/main.js:167:20)
at Module._compile (module.js:641:30)
at Object.Module._extensions..js (module.js:652:10)
at Module.load (module.js:560:32)
at tryModuleLoad (module.js:503:12)
at Function.Module._load (module.js:495:3)
控制台日志显示以下输出:
Cert content:
-----BEGIN CERTIFICATE REQUEST-----
// base64 here
-----END CERTIFICATE REQUEST-----
-----BEGIN PRIVATE KEY-----
// base64 here
-----END PRIVATE KEY-----
为什么说pem文件有正确的页眉和页脚是无效的?
【问题讨论】:
-
问题可能是证书或密钥的复制粘贴...尝试再次添加证书和密钥
-
@aRvi 不确定您的意思。编辑:我将控制台的输出复制到两个新的文本文件中,但它有同样的问题。
-
当证书或密钥文件不正确时会出现此错误...删除旧凭据并重新添加
/etc/letsencrypt/keys/0000_key-certbot.pem,/etc/letsencrypt/keys/0000_csr-certbot.pem -
@aRvi 我认为它们需要从 pem 文件转换为另一种格式
标签: javascript node.js ssl https ssl-certificate