如題。我在實驗環境裏,分別要爲兩個endpoint(T9和T129)生成證書。html
證書是如何生成的呢?瀏覽器
證書是由根證書機構簽發的。申請證書的人將request提交給根證書機構,而後根證書機構根據request返還一個簽好名的證書。post
首先,要弄出這三我的來。(生成私鑰)url
[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。spa
而後,tong創建了一個根證書機構。它並非個權威,它的機構也不是權威機構。因此,咱們管這個叫「自簽名證書」 (生成根證書)code
[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
建好了~~~orm
T9和T129分別用私鑰生成本身的requestserver
[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頒發證書htm
[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
好了,來個全家福blog
[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 公鑰、私鑰以及自簽名證書
完。