生成CA证书
- 创建CA证书私钥
1 | openssl genrsa -out ca-key.pem -des 1024 |
- 通过CA私钥生成CSR
1 | openssl req -new -key ca-key.pem -out ca-csr.pem |
- 通过私钥和CSR生成CA证书
1 | openssl x509 -req -in ca-csr.pem -signkey ca-key.pem -out ca-cert.pem -days 1095 |
- 检测CA证书是否正常
1 | openssl x509 -in ca-cert.pem -noout -text |
创建服务端或者客户端证书
- 创建私钥
1 | openssl genrsa -out server-key.pem 1024 |
- 根据私钥生成CSR
1 | openssl req -new -key server-key.pem -out server-csr.pem |
- 创建extfile, 文件内容如下:
1 | [v3_req] |
注意DNS.3为你的域名信息,保持和步骤2里面的Common Name一致
- 通过私钥和CSR生成自签名证书
1 | openssl x509 -req -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -in server-csr.pem -out server-cert.pem -extensions v3_req -extfile extfile -days 1095 |
证书打包
一般服务器部署需要的SSL证书,我们直接用server-cert.pem
和server-key.pem
即可,但是在Node.js上为了开发方便,我们可以把证书进行合并。合并时,请记住输入的密码。
1 | openssl pkcs12 -export -in server-cert.pem -inkey server-key.pem -certfile ca-cert.pem -out server.pfx |
导入证书到操作系统
Windows上将
ca-cert.pem
改为ca-cert.cer
, 点击导入到受信任的根证书颁发机构
即可Mac上直接安装
ca-cert.cer
即可
Node.js测试
1 | const https = require('https') |
用Chrome访问https://localhost, 可以看到左上角绿色的锁,页面显示为hello world