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

Javascript 尝试创建https服务器时出现Nodejs证书错误,javascript,node.js,ssl,https,ssl-certificate,Javascript,Node.js,Ssl,Https,Ssl Certificate,我用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

我用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)
{
    
});
在create server调用中,会出现以下错误:

_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)
certbot: error: unrecognized arguments: ––apache-challenge-location /etc/httpd/conf
为什么说pem文件具有正确的页眉和页脚时无效

-----BEGIN CERTIFICATE REQUEST-----
// base64 here
-----END CERTIFICATE REQUEST-----
您仅在此处提供一个证书请求。但我们希望您实际提供证书,该证书如下所示:

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

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

下面的某个位置。在遵循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
我得到了这个错误:

_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)
certbot: error: unrecognized arguments: ––apache-challenge-location /etc/httpd/conf

因为apache前面的两个破折号是错误的破折号字符,因为我从一个用户编写的博客上复制了它,并对其进行了错误的更改。

问题可能是证书或密钥的复制粘贴。。。请尝试再次添加证书和证书key@aRvi不知道你说的是什么意思。编辑:我将控制台的输出复制到两个新的文本文件中,但它有相同的问题。当证书或密钥文件不正确时,会发生此错误。。。删除旧凭证并再次添加
/etc/letsencrypt/keys/0000_key-certbot.pem
/etc/letsencrypt/keys/0000_csr-certbot.pem
@aRvi我认为它们需要从pem文件转换为另一种格式,而不是在/etc/letsencrypt目录中读取,它包含以下文件和文件夹:accounts/csr/keys/options-ssl-apache.conf renewal/renewal hooks/。updated-options-ssl-apache-conf-digest.txt,我在csr和keys文件夹中找到了pem文件,但我没有看到任何其他pem文件。@John:我不知道您声称创建的证书的位置。也许您实际上没有创建证书,只是创建了证书请求和密钥?那么我将尝试创建另一个证书