我们希望支持在我们的网站上创建的登录页面能够通过https投放到用户希望为其服务的自定义域上。因此,我们可以为每个用户拥有单独的SSL证书,并且我们有一个节点服务器。我们要实现以下目标:

1)将多个SSL证书附加到节点服务器。
2)我们需要一种在任何时间将证书附加到服务器的方法。每当我们从客户那里获得域名时。

最佳答案

让我们用Greenlock Express v3加密

我是Greenlock Express的作者,这是让我们为Node.js,Express等加密的文件。

我仍在编写v3 documentation(很多未链接到示例的链接,这些示例尚未从v2转换),但是设置看起来像这样:

require("greenlock-express")
    .init(function getConfig() {
        return {
          package: require("./package.json")
          manager: 'greenlock-manager-fs',
          cluster: false,
          configFile: '~/.config/greenlock/manager.json'
        };
    })
    .serve(httpsWorker);

function httpsWorker(server) {
    // Works with any Node app (Express, etc)
    var app = require("./my-express-app.js");

    // See, all normal stuff here
    app.get("/hello", function(req, res) {
        res.end("Hello, Encrypted World!");
    });

    // Serves on 80 and 443
    // Get's SSL certificates magically!
    server.serveApp(app);
}


默认情况下,它在节点v12 +上使用http2,并且还可以与节点群集一起使用,以便您可以利用多个内核。

它使用SNICallback动态地添加证书。

现场管理

默认的管理器插件使用文件系统上的文件,但是有关如何构建自己的文件的great documentation

刚开始,基于文件的插件如下所示:

~/.config/greenlock/manager.json

{
    "subscriberEmail": "[email protected]",
    "agreeToTerms": true,
    "sites": [
        {
            "subject": "example.com",
            "altnames": ["example.com", "www.example.com"]
        }
    ]
}


密钥和证书管理

同样,默认的Key and Cert插件是基于文件系统的(实际上从早期起便是基于certbot),但是有一个用于连接数据库的插件(greenlock-store-sequelize),以便您可以随意管理自己的证书。

默认插件将它们存储在~/.config/greenlock/中。

DNS-01和HTTP-01挑战插件

有适用于各种DNS提供程序(Name.com,NameCheap,DNSimple,GoDaddy等)的插件,并且有一个测试套件,可轻松编写您需要自己编写的几个回调:


Greenlock HTTP-01 docs
Greenlock DNS-01 docs


管理API

已经有一个API,因为我正忙着(现在)在为它编写正式文档,所以我不会在此处进行记录,但是实际上,您将执行以下操作:

greenlock.add({
  subject: 'example.com',
  altnames: ['example.com', '*.example.com']
})


工作中有一些CLI工具,即将推出的Greenlock Pro将为其提供UI以及路由工具(即,从此目录提供域X,将域Y代理到2345端口并启用websocket支持等)

我会回来的

准备好更多正式文档后,我将返回并在此处添加一些更新。

请随时通过Keypairs与我联系。我在那儿@ coolaj86。

07-24 19:54