[ipsec][strongswan] 用strongswan pki工具生成自签名证书
如题。我在实验环境里,分别要为两个endpoint(T9和T129)生成证书。
证书是如何生成的呢?
证书是由根证书机构签发的。申请证书的人将request提交给根证书机构,然后根证书机构根据request返还一个签好名的证书。
首先,要弄出这三个人来。(生成私钥)
[root@T9 OUTPUT]# ./bin/pki --gen --type ed25519 --outform pem > tong.pem [root@T9 OUTPUT]# ./bin/pki --gen --type ed25519 --outform pem > t9.pem [root@T9 OUTPUT]# ./bin/pki --gen --type ed25519 --outform pem > t129.pem
tong是根证书机构的实体。T9和T129是两个endpoint。
然后,tong建立了一个根证书机构。它并不是个权威,它的机构也不是权威机构。所以,我们管这个叫“自签名证书” (生成根证书)
[root@T9 OUTPUT]# ./bin/pki --self --ca --lifetime 3652 --in tong.pem --dn "C=CH, O=tong, CN=tong Root CA" --outform pem > tongCert.pem
建好了~~~
T9和T129分别用私钥生成自己的request
[root@T9 OUTPUT]# ./bin/pki --req --type priv --in t9.pem --dn "C=CH, O=t9, CN=t9.tong.localhost" --san t9.tong.localhost --outform pem > t9Req.pem [root@T9 OUTPUT]# ./bin/pki --req --type priv --in t129.pem --dn "C=CH, O=t129, CN=t129.tong.localhost" --san t129.tong.localhost --outform pem > t129Req.pem
tong用自己的根证书,拿着两个request,分别给T9和T129颁发证书
[root@T9 OUTPUT]# ./bin/pki --issue --cacert tongCert.pem --cakey tong.pem --type pkcs10 --in t9Req.pem --serial 01 --lifetime 1826 --outform pem > t9Cert.pem [root@T9 OUTPUT]# ./bin/pki --issue --cacert tongCert.pem --cakey tong.pem --type pkcs10 --in t129Req.pem --serial 01 --lifetime 1826 --outform pem > t129Cert.pem
好了,来个全家福
[root@T9 OUTPUT]# ls -l -rw-r--r-- 1 root root 538 Dec 15 17:05 t129Cert.pem -rw-r--r-- 1 root root 119 Dec 15 16:57 t129.pem -rw-r--r-- 1 root root 395 Dec 15 17:05 t129Req.pem -rw-r--r-- 1 root root 530 Dec 15 17:05 t9Cert.pem -rw-r--r-- 1 root root 119 Dec 15 16:57 t9.pem -rw-r--r-- 1 root root 387 Dec 15 17:04 t9Req.pem -rw-r--r-- 1 root root 534 Dec 15 16:57 tongCert.pem -rw-r--r-- 1 root root 119 Dec 15 16:56 tong.pem [root@T9 OUTPUT]#
那,为啥要这样搞呢?
因为在计算机的世界里,证书代表着信任传递。作为用户是弱势群体,我们没法判断一个站点或者server是不是骗子。但是我们相信权威根证书机构就都是好人。(不过也有例外,想当年某权威机构签名了某Cert的证书来使其完成不可告人的目的。导致开源社区里纷纷删除了该根证书。)
一般的客户端,浏览器。OS里都会授权信任根证书。然后所以在这个根证书机构签过名的子机构,凭着他们的签名证书,我们也将信任他们。
回到我的例子里。实验中,我的两个endpoint会分别信任根证书tongCert.pem。然后他们会彼此检测对方的签名证书是否被信任。
更多:[https][openssl] OpenSSL 公钥、私钥以及自签名证书
完。