尝试创建https服务器时Nodejs证书错误

时间:2020-10-04 12:53:56

标签: javascript node.js ssl https ssl-certificate

我使用“让我们加密”自动创建了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文件具有正确的页眉和页脚是无效的?

2 个答案:

答案 0 :(得分:1)

-----BEGIN CERTIFICATE REQUEST-----
// base64 here
-----END CERTIFICATE REQUEST-----

您仅在此处提供证书申请。但是,预计您实际上会提供证书,它看起来像这样:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

证书可能位于/etc/letsencrypt/live以下。

答案 1 :(得分:0)

在遵循aRvi和Steffen的建议之后,我尝试重新创建ssl证书。

事实证明,由于certbot的apache插件中的错误,无法创建它们。

它试图使用一个不存在的文件夹名称:

FileNotFoundError: [Errno 2] No such file or directory: '/etc/httpd/conf.d/le_http_01_challenge_pre.conf'

所以我告诉了它正确的文件夹:

sudo /usr/local/bin/certbot-auto certonly --apache --apache-challenge-location /etc/httpd/conf

我遇到此错误:

certbot: error: unrecognized arguments: ––apache-challenge-location /etc/httpd/conf

由于apache前面的两个破折号是错误的破折号,因为我是从用户撰写的博客中复制了该破折号而错误地更改了它。