[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 公钥、私钥以及自签名证书

完。

原文地址:https://www.cnblogs.com/hugetong/p/10123971.html