【问题标题】:Nodejs certificate error while trying to create https server尝试创建 https 服务器时出现 Nodejs 证书错误
【发布时间】: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


【解决方案1】:
-----BEGIN CERTIFICATE REQUEST-----
// base64 here
-----END CERTIFICATE REQUEST-----

您只是在此处提供证书请求。但预计您实际上提供了证书,如下所示:

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

证书可能低于/etc/letsencrypt/live

【讨论】:

  • 在 /etc/letsencrypt 目录下,包含以下文件和文件夹:accounts/csr/keys/options-ssl-apache.confrenew/renewable-hooks/.updated-options-ssl-apache -conf-digest.txt,我在csr和keys文件夹中找到了pem文件,没有看到其他pem文件。
  • @John:我不知道您声称创建的证书在哪里。也许您实际上并没有创建证书,而只是创建了证书请求和密钥?
  • 我会尝试再创建一个
【解决方案2】:

在遵循 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 前面的两个破折号是错误的破折号字符,因为我从一个用户写的博客上复制了它,但错误地更改了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2016-10-28
    • 1970-01-01
    相关资源
    最近更新 更多