我使用OpenSSL通过以下步骤生成证书:
〜/ openssl genrsa -out server.key 2048
〜/ openssl req -new -x509 -key server.key -out server.crt -days 730
然后将这些文件加载到node.js
var https = require('https');
var privateKey = fs.readFileSync('./server.key', 'utf8');
var certificate = fs.readFileSync('./server.crt', 'utf8');
var credentials = {
key: privateKey,
cert: certificate
};
var app = express();
var httpsServer = https.createServer(credentials, app);
这样,我的服务器按预期运行。但是在Chrome中,当我点击查看网站信息时,它说我使用了一个过时的密码套件" ..
所以我检查了Google的证书,它说的是现代密码套件"。
我的自签名证书和谷歌之间的唯一区别是密钥交换算法,这是我的RSA和谷歌的ECDHE_ECDSA。
所以我决定使用创建新证书;
〜/ openssl ecparam -name prime256v1 -genkey -param_enc explicit -out server.key
〜/ openssl req -new -x509 -key server.key -out server.crt -days 730
创建了文件,node.js没有任何错误。但是当我尝试连接到服务器时,我的浏览器只是关闭连接(ERR_CONNECTION_CLOSED)而服务器和客户端都没有错误指示。
我尝试了不同参数的不同私钥,但没有运气。某个地方的简单错误信息会有很大的帮助,但是我被困了几个小时谷歌搜索如何创建现代密码,尝试这些并最终没有任何东西。
所以我的问题是,我应该如何创建一个可以与Node.js https模块配合使用的自签名强/现代密码(使用openssl)?