我们希望支持在我们的网站上创建的登录页面能够通过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。