Node.js生成具有特定公用名

时间:2017-05-10 04:38:09

标签: node.js express ssl lets-encrypt

我目前正在尝试使用节点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访问我的内部(本地)网络上的网站时。我收到以下错误:

enter image description here

有谁知道如何修改LetsEncrypt证书申请中的公用名称到192.168.0.myserveraddress,这样我在通过局域网访问我的网站时不会出现此错误?

1 个答案:

答案 0 :(得分:0)

我实际上是通过设置我们的局域网来解决这个问题,以便使用所谓的NAT Loopback来实现环回连接。

这意味着我不再需要使用本地IP地址(192.168.0.myserveraddress)来访问我的服务器,只需使用www.mydomain.com在内部访问它。

由于这维护了域名,因此证书现在受信任,我不再有上述错误。

此外,我认为证书颁发机构(即LetsEncrypt)不会颁发IP地址证书。因此,解决上述错误的唯一方法是通过其域名访问网站。见下面的链接。

https://community.letsencrypt.org/t/certificate-for-static-ip/84