我对证书一无所知,而今天,由于对在HTTPS上为本地开发生成自签名密钥(使本地和远程主机名与CORS的Access-Control匹配)这一愚蠢的现实而感到沮丧后,今天-Allow-Origin,它只能有一个值,并且当它是CDN时,不能基于客户端/对等方的Host标头动态重写)。我发现了有关生成公钥和私钥对的信息:
const crypto = require('crypto');
const fs = require('fs');
crypto.generateKeyPair('rsa',
{
modulusLength: 4096,
publicKeyEncoding: {
type: 'spki',
format: 'pem',
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
}
},
(error, publicKey, privateKey) => {
if (error) {
throw error;
}
fs.writeFile('pub-key.pem', publicKey, console.log);
fs.writeFile('priv-key.pem', privateKey, console.log);
});
但这只是一个密钥对。我想知道是否可以使用Node及其加密API创建一个PEM证书文件,该文件使用密钥对中的私钥进行自签名。无需在Node中重新实现一半的OpenSSL,就可以做到吗?
请注意,我感兴趣的范围是用于本地Web开发的自签名证书,只要可以使浏览器接受它,那么它的不安全性或非最佳性实际上并不重要(因为另一种选择是经常在本地开发中禁用CORS,这充其量是最糟糕的选择。