Node.js 生成 LetsEncrypt.org 具有特定通用名称的 SSL 证书
Node.js generate LetsEncrypt.org SSL certificate with specific common name
我目前正在尝试使用节点 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 这样当我通过局域网访问我的网站时就不会出现此错误?
我实际上解决了这个问题,方法是将我们的局域网设置为允许使用所谓的 NAT 环回的环回连接。
这意味着我不再需要使用本地 IP 地址 (192.168.0.myserveraddress) 访问我的服务器,只需使用 www.mydomain.com 即可在内部访问它。
因为这维护了域名,证书现在是可信的,我不再有上述错误。
此外,我认为证书颁发机构(即 LetsEncrypt)不会为 IP 地址颁发证书。因此解决上述错误的唯一方法是通过其域名访问该网站。请参阅下面的 link。
https://community.letsencrypt.org/t/certificate-for-static-ip/84.
我目前正在尝试使用节点 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 这样当我通过局域网访问我的网站时就不会出现此错误?
我实际上解决了这个问题,方法是将我们的局域网设置为允许使用所谓的 NAT 环回的环回连接。
这意味着我不再需要使用本地 IP 地址 (192.168.0.myserveraddress) 访问我的服务器,只需使用 www.mydomain.com 即可在内部访问它。
因为这维护了域名,证书现在是可信的,我不再有上述错误。
此外,我认为证书颁发机构(即 LetsEncrypt)不会为 IP 地址颁发证书。因此解决上述错误的唯一方法是通过其域名访问该网站。请参阅下面的 link。
https://community.letsencrypt.org/t/certificate-for-static-ip/84.