我正在寻找可在ubuntu LTS和Windows上运行的nodejs项目的免费HTTPS证书。 (我需要它来进行推送服务通知。)
我使用“让我们加密”和“ https://gethttpsforfree.com/”(我认为也使用“让我们加密”)捆绑在一起,但是当显示使用的端口为80时,我总是在接近尾声时出错。打开80,因为它正在被另一个项目使用,而我却没有访问权限。
想法是制作一个可以使用相应密钥(例如示例)在节点服务器上运行的证书:
const https = require("https");
//Irelevant code...
https.createServer({
key: fs.readFileSync("nodeServerKey.pem", "utf8"),
cert: fs.readFileSync("nodeServerCert.cert", "utf8")
}, app).listen(process.env.PORT, (err) => {
if (err) log.error(err);
log.info('Server (https) running since: ' + new Date());
});
当我使用https://gethttpsforfree.com的方法时,所有步骤均按OK(确定)完成,除了“步骤4:验证所有权”(以该错误结尾)(我更改了诸如domain和ip之类的私人信息)。
错误:域质询失败。请从步骤1重新开始。 {“ identifier”:{“ type”:“ dns”,“ value”:“ exampleNotReal.dyndns.biz”},“ status”:“ invalid”,“ expires”:“ 2019-10-25T10:22:04Z” ,“挑战”:[{“类型”:“ http-01”,“状态”:“无效”,“错误”:{“类型”:“ ur:ietf:参数:acme:错误:连接”,“详细信息“:”正在提取 http://exampleNotReal.dyndns.biz/.well-known/acme-challenge/KUUhXCjCkDdalnUTyItqiNze03UBLiGzKGqdW-IctF8: 连接期间超时(可能是防火墙 问题)“,”状态“:400},” URL“:” https://acme-v02.api.letsencrypt.org/acme/chall-v3/831805630/-ALg4Q“,”令牌“:” KUUhXCjCkDdalnUTyItqiNze03UBLiGzKGqdW-IctF8“,” validationRecord“:[{” URL“:” http://exampleNotReal.dyndns.biz/.well-known/acme-challenge/KUUhXCjCkDdalnUTyItqiNze03UBLiGzKGqdW-IctF8“ ,“主机名”:“ exampleNotReal.dyndns.biz”,“端口”:“ 80”,“ addressesResolved”:[“ adressNotReal”],“ addressUsed”:“ adressNotReal”}]},{“ type”:“ dns- 01“,”状态“:”无效“,” URL“:” https://acme-v02.api.letsencrypt.org/acme/chall-v3/831805630/7wrhNw“,”令牌“:” KUUhXCjCkDdalnUTyItqiNze03UBLiGzKGqdW-IctF8“},{”类型“:” tls-alpn-01“,”状态“ :“ invalid”,“ url”:“ https://acme-v02.api.letsencrypt.org/acme/chall-v3/831805630/bbmx1g”,“令牌”:“ KUUhXCjCkDdalnUTyItqiNze03UBLiGzKGqdW-IctF8”}]}
我不知道为什么它告诉端口80,因为我指定了另一个端口
sudo python2 -c "import BaseHTTPServer; \
h = BaseHTTPServer.BaseHTTPRequestHandler; \
h.do_GET = lambda r: r.send_response(200) or r.end_headers() or r.wfile.write('KUUhXCjCkDdalnUTyItqiNze03UBLiGzKGqdW-IctF8.NfSBGYz0Vk2JPD9Pi1Pqko5cfqjgD3LchCOBgVVCSjE'); \
s = BaseHTTPServer.HTTPServer(('IP', ANOTHERPORT), h); \
s.serve_forever()"
有什么想法或其他方法吗?