我正在使用Node.js中的Express框架来创建Web服务器。我希望传输基于SSL。
创建https Web服务器的代码如下。
var app = express.createServer({ key: fs.readFileSync('./conf/key.pem'), cert: fs.readFileSync('./conf/cert.pem') }); module.exports = app;
问:如何创建express所需的key.pem和cert.pem?
您需要的两个文件是PEM编码的SSL证书和私钥。PEM编码的证书和密钥是Base64编码的文本,带有看起来像-----BEGIN RSA PRIVATE KEY-----或相似的开始/结束定界符。
-----BEGIN RSA PRIVATE KEY-----
要创建SSL证书,您首先需要生成一个私钥和一个证书签名请求或CSR(其中也包含您的公钥)。您可以通过多种方式来做到这一点,但这是OpenSSL中的方法。
openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
这将导致您输入一个交互式提示,以生成一个2048位RSA私钥和一个CSR,其中包含您在提示处选择输入的所有信息。( 注意:“公用名”是您要用来放置用于访问网站的域名的位置。 )完成此操作后,通常需要将此CSR提交给受信任的证书颁发机构,并且在他们通过验证之后您的请求将获得证书。
如果您不关心证书是否受信任(通常出于开发目的),则可以创建一个自签名证书。为此,我们可以使用几乎同一行,但是我们将传递两个额外的参数。
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
这将为您提供证书(有效期为10年)和密钥对,您可以在发布的代码段中使用它。