我使用“让我们加密”自动创建了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文件具有正确的页眉和页脚是无效的?
答案 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前面的两个破折号是错误的破折号,因为我是从用户撰写的博客中复制了该破折号而错误地更改了它。