我有从godaddy购买的证书,它需要安装在我们的nodejs服务器中。我编写了以下代码。这工作较早,但我们最近更新了证书,并将旧证书替换为指定文件夹中的续订证书和证书私钥文件。但是证书信息没有反映在网站上。旧证书的失效日期是2010年6月20日。直到旧证书到期才会反映出来吗?
var options = {
key: fs.readFileSync('certificate/mssp.tcs.com.key'),
cert: fs.readFileSync('certificate/mssp.tcs.com.crt'),
ca: [fs.readFileSync('certificate/mssp.tcs.comi.crt')]
};
var server = app.listen(8001, function () {
console.log('%s listening at %s', server.name, server.url);
console.log("server Started");
});
https.createServer(options,app).listen('443 ');
答案 0 :(得分:3)
导入证书和密钥的方式是正确的。所以我认为您的问题可能是由使用旧证书指向旧文件或现有进程引起的。在这种情况下,我建议:
仔细检查certificate/mssp.tcs.com.*
个文件,确保所有文件都真正指向续订的文件。有时我们有受限制文件夹的符号链接,如果没有正确的权限,简单副本可能会失败。
确保新文件到位后。确保kill
可能正在运行的旧进程。您可以通过Linux服务器上的ps -ef | grep node
实现这一目标,然后通过PID实现kill
。小心停止正确的应用程序。停止旧流程后,如果您通过浏览器访问Web应用程序,则应该“未找到”。
确保您有新文件并且旧进程不再运行,请启动您的节点进程。您的证书应该更新:)
最后,我还建议您查看在没有https的情况下在端口8001上运行的server
。只需确保您需要或删除它。运行HTTPS的简单代码可以是这样的:
'use strict';
var express = require('express'),
fs = require('fs'),
https = require('https');
var httpPort = 443;
var app = express();
var options = {
key: fs.readFileSync('privkey.pem'),
cert: fs.readFileSync('cert.pem')
};
app.set('port', httpPort);
app.use(express.static(path.join(__dirname, '/public')));
https.createServer(options, app).listen(httpPort, function(){
console.log('Listening at ' + httpPort);
});