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.