我目前正在尝试使用节点letsencrypt包(https://www.npmjs.com/package/letsencrypt)创建LetsEncrypt SSL证书包。我已设法使用以下代码生成标准证书套件。
'use strict';
var express = require('express');
var LE = require('letsencrypt');
var le;
// server = staging for test encryption cert generation
// server = production for generating verified certificate
var le = LE.create({ server: 'production' });
// Define encryption certificate options as JSON object
var opts = {
domains: ['www.mydomain.com'], email: 'me@mydomain.com', agreeTos: true
};
// Submit certificate signing request to LetsEncrypt.
// Print certificates, keys (i.e. pem files) when received from server.
le.register(opts).then(function (certs) {
console.log(certs);
// privkey, cert, chain, expiresAt, issuedAt, subject, altnames
}, function (err) {
console.error(err);
});
var app = express();
// Create server listening on port 80 to handle ACME challenges
// i.e. basic web server to serve files so CA can verify website ownership
app.listen(80, function () {
console.log('Basic server started and listening on port 80');
console.log('Server handling basic ACME protocol challenges');
});
// Allow access to all static files in server directory
// Enables CA to access file served up to verify domain ownership
app.use('/', le.middleware());
当通过www.mydomain.com访问时,LetsEncrypt.org会生成一个可靠的证书。但是,当我尝试通过192.168.0.myserveraddress访问我的内部(本地)网络上的网站时。我收到以下错误:
有谁知道如何修改LetsEncrypt证书申请中的公用名称到192.168.0.myserveraddress,这样我在通过局域网访问我的网站时不会出现此错误?
答案 0 :(得分:0)
我实际上是通过设置我们的局域网来解决这个问题,以便使用所谓的NAT Loopback来实现环回连接。
这意味着我不再需要使用本地IP地址(192.168.0.myserveraddress)来访问我的服务器,只需使用www.mydomain.com在内部访问它。
由于这维护了域名,因此证书现在受信任,我不再有上述错误。
此外,我认为证书颁发机构(即LetsEncrypt)不会颁发IP地址证书。因此,解决上述错误的唯一方法是通过其域名访问网站。见下面的链接。
https://community.letsencrypt.org/t/certificate-for-static-ip/84