要读懂此文章,你需要了解对称加密、非对称加密的基本概念,并了解证书签发的基本流程。

工具准备

  1. 一台 Linux 主机
  2. 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

试一试刚刚签发的证书

  1. 在待测试终端设备上安装 CA 的根证书 CAPrivate.pem,比如 Windows、Android,某些浏览器必须单独安装证书。
  2. example.keyexample.crt 作为 HTTPS 服务(比如 Nginx)的私钥和证书,写好配置文件。
  3. 在浏览器里面试试看,应该可以显示小锁,且没有安全警告。