如何为https web服务器创build.pem文件

我在Node.js中使用Express框架来创build一个Web服务器。 我想运输是基于SSL的。

创buildhttps网页服务器的代码如下。

var app = express.createServer({ key: fs.readFileSync('./conf/key.pem'), cert: fs.readFileSync('./conf/cert.pem') }); module.exports = app; 

问题:如何创buildexpress所需的key.pem和cert.pem?

您需要的两个文件是一个PEM编码的SSL证书和私钥。 PEM编码的证书和密钥是Base64编码的文本,其开始/结束分隔符看起来像-----BEGIN RSA PRIVATE KEY-----或类似的。

要创build一个SSL证书,首先需要生成一个私钥和一个证书签名请求,或者CSR(也包含您的公钥)。您可以通过多种方式来完成这项工作,但是在OpenSSL中是这样的。

 openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem 

这将导致您input一个交互式提示来生成一个2048位RSA私钥和一个CSR,其中包含您在提示中selectinput的所有信息。 ( 注意:通用名称是您希望将域名用于访问您的网站的地方。 )完成此操作后,您通常会将此CSR提交给受信任的证书颁发机构,并且一旦经过validation你的要求你会收到一个证书。

如果您不关心您的证书被信任(通常是为了开发目的),您可以创build一个自签名证书。 要做到这一点,我们可以使用几乎相同的线,但我们会传递两个额外的参数。

 openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem 

这将给你一个证书(有效期10年)和密钥对,您可以在您发布的代码段中使用。

只要按照这个程序:

  1. 创build您要存储您的密钥和证书的文件夹:

    mkdir conf


  1. 去那个目录:

    cd conf


  1. 抓住这个ca.cnf文件作为configuration快捷键:

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf


  1. 使用此configuration创build一个新的证书颁发机构:

    openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem


  1. 现在我们在ca-key.pemca-cert.pem拥有我们的authentication权限,我们来为服务器生成一个私钥:

    openssl genrsa -out key.pem 4096


  1. 抓住这个server.cnf文件作为configuration快捷方式:

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf


  1. 使用此configuration生成证书签名请求:

    openssl req -new -config server.cnf -key key.pem -out csr.pem


  1. 签署请求:

    openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem

我在这里find了这个过程,以及有关如何使用这些证书的更多信息。