Node之https模块
服务器结构有两种,一种是浏览器直接和 node 服务器通过 https 协议交互,这种用的少,常用的是第二种,浏览器和 nginx 通过 https 协议交互,在服务器内部和 node 服务器通过 http 交互。
这样并不会导致泄漏,因为这是在服务器内部进行交互,而且在部署之后就不会对外开放端口,只会对内使用。
想要使用 https 证书,可以在网上申请,比如 ssl 证书申请,这种方式一般是公司进行申请,费用比较高。只需要将服务器,域名部署到环境 nginx 中就可以了。
还可以本地生成证书,就是将自己作为机构来发布证书。之前我们知道 https 协议需要一层 ssl 加密,所以我们先来安装 openssl 。可以下载源码,不过不可以安装,它使用 perl 脚本语言,需要自己进行构建编译。还可以下载 windows 安装包,使用 ssl 命令需要把 bin 目录配置到环境变量,mac 电脑自带,不需要额外配置。
openssl genrsa -des3 -out ca-pri-key.pem 1024
使用上面的命令生成私钥。采用 genrsa 算法生产密钥对,产生的私钥再进行 des3 对称加密,输入的密码就是 des3 算法的 key 。后面是要保存的目录文件,最后是字节数。生成了 ca-pri-key.pem 文件。
openssl req -new -key ca-pri-key.pem -out ca-pub-key.pem
使用这个命令来生成公钥。通过私钥来生产公钥,生成过程中需要使用密码对私钥文件解密。通过这个公钥就可以生成 CA 证书。
openssl x509 -req -in ca-pub-key.pem -signkey ca-pri-key.pem -out ca-cert.crt
生成 CA 证书。使用 X.509 证书标准。
openssl genrsa -out server-key.pem 1024
openssl req -new -key server-key.pem -out server-scr.pem
openssl x509 -req -CA ca-cert.crt -CAkey ca-pri-key.pem -CAcreateserial -in server-scr.pem -out server-cert.crt
生成服务器私钥,公钥和证书,实际上,最后只需要服务器私钥和证书,证书里已经包含了服务器公钥。服务器私钥就不需要加密了,因为 CA 生成的私钥包住了服务器公钥。
之前的静态资源服务器只要把 http 改为 https ,并且加一个 key 和 cert 的配置就可以了。