如何为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年)和密钥对,您可以在您发布的代码段中使用。
只要按照这个程序:
-
创build您要存储您的密钥和证书的文件夹:
mkdir conf
-
去那个目录:
cd conf
-
抓住这个
ca.cnf
文件作为configuration快捷键:wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf
-
使用此configuration创build一个新的证书颁发机构:
openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem
-
现在我们在
ca-key.pem
和ca-cert.pem
拥有我们的authentication权限,我们来为服务器生成一个私钥:openssl genrsa -out key.pem 4096
-
抓住这个
server.cnf
文件作为configuration快捷方式:wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf
-
使用此configuration生成证书签名请求:
openssl req -new -config server.cnf -key key.pem -out csr.pem
-
签署请求:
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了这个过程,以及有关如何使用这些证书的更多信息。