要读懂此文章,你需要了解对称加密、非对称加密的基本概念,并了解证书签发的基本流程。
工具准备
- 一台 Linux 主机
- openssl
创建 CA 的私钥
很容易理解,CA 也有自己的公钥和私钥。
openssl genrsa -des3 -out CAPrivate.key 4096
这个命令会生成一个私钥 CAPrivate.key
,并且必须要填写私钥的密码。不要奇怪这里只有一个私钥,其实公钥也保存在这个文件里了。
创建根证书
openssl req -x509 -new -nodes -key CAPrivate.key -sha256 -days 3650 -out CAPrivate.pem
根证书,顾名思义,肯定是自签发的。这个证书待会需要安装到你的终端设备里面,不然靠这个根证书签发的其他证书不会被信任。
这个命令里面需要填写很多信息,按照实际填写就好。
至此,作为一个简单的 CA,所有的文件都已经齐全了。
创建待签发证书的私钥
这个私钥与 CA 无关,是待签发的下一级证书。这一步和下一步可以在另一台机器上完成,然后把文件传给保存 CA 信息的机器就好。
openssl genrsa -out example.key 4096
创建 CSR
可以理解为一个待发送给 CA、为你签发证书的一个请求。
openssl req -new -key example.key -out example.csr
同样,这里需要填写很多信息,需要注意的是 Common Name
这个项目,如果你的证书是给 https 用的,这里就填你的域名。
使用 CA 的私钥签发证书
openssl x509 -req -in example.csr -CA CAPrivate.pem -CAkey CAPrivate.key -CAcreateserial -out example.crt -days 365 -sha256
试一试刚刚签发的证书
- 在待测试终端设备上安装 CA 的根证书
CAPrivate.pem
,比如 Windows、Android,某些浏览器必须单独安装证书。 - 把
example.key
和example.crt
作为 HTTPS 服务(比如 Nginx)的私钥和证书,写好配置文件。 - 在浏览器里面试试看,应该可以显示小锁,且没有安全警告。