证书验证与 OpenSSL

资料:

如何使用 OpenSSL 建立開發測試用途的自簽憑證 (Self-Signed Certificate)

Create a self-signed certificate using OpenSSL

OpenSSL Certification Authority (CA) on Ubuntu Server

Create your own Certificate Authority

现在生产环境最次其实也应该有个 Let‘s Encrypt,而且能够被浏览器信任,自签证书除了测试环境其实没啥用(

实验

本例我们需要自己扮演一个根证书颁发机构 ( CA ),来自己给自己签发一个根证书,并用这个根证书为其他证书签名。

这个实验需要使用 OpenSSL 来签发证书。

这个实验需要几个步骤,分别为:

  • 生成根证书所需的私钥

  • 用这个私钥签发证书,作为根证书

  • 生成需要证书的客户端的私钥

  • 使用客户端私钥创建证书签发请求

  • 在根证书服务器上签发证书

在生产环境中,要签发实际使用的证书通常在我们的本机上生成私钥,来确保加密传输的安全性,但实验中,我们完全可以把所有环节均在 CA 服务器上完成,这样可以省下许多把文件传来传去的时间。

根证书的签发

签发根证书前,先做一些配置。

修改 /usr/lib/ssl/openssl.cnf,在 48 行,[CA_default] 中,修改 dir 为存放 CA 需要文件的根目录,本例为 /CA

修改后,创建两个文件

创建好目录结构

接下来切换到 CA 的根目录,开始生成 CA 根证书

生成的 cacert.pem 即为根证书,需要将其导入所有主机的信任列表

其他证书的签发

签发其他证书时,依然需要生成私钥,但第二步需要生成证书签发请求,然后使用 CA 根证书签名

连敲两个 y 即可

生成的 server01.pem 即为证书

在配置证书时,需要生成的客户机自己的私钥,与经过根证书签名的证书,根证书自己的私钥需在 CA 服务器上自己保存好。

之后要签发证书,按照生成私钥 -> 生成签发请求 -> 在 CA 上签名 这三步即可。

由于总是要传一些签发好的证书,所以建议这时先不要阻挡 CA 服务器的 SSH 访问,能大大加快实际做题的速度

指用 SCP 传文件

最后更新于

这有帮助吗?