證書相關概念及使用openssl生成自認證證書

2021-07-14 08:37:20 字數 2524 閱讀 4056

根證書:根證書負責其他可信任證書的頒發,不同的ca機構具有不同的根證書。通過openssl我們可以自建ca證書(不屬於權威機構頒發的,但經常部署證書測試需要用到),用於頒發其他證書(用根證書的私鑰對其他證書進行簽名,從而保證其他證書的可信性)。

證書認證原理:根證書用自己的私鑰簽署了服務端的證書,驗證時要根證書的公鑰解密服務端的證書,從而達到了身份驗證。這種方式也叫做數字簽名,可驗證服務端證書確實是由根證書頒發的。

證書的信任鏈:a信任b,b信任c,則a信任c。根證書簽發服務端證書後,服務端證書可簽發二級證書,則二級證書也認為是可信任的(客戶端有服務端的公鑰,所以知道這是服務端頒發的證書)。

單向認證:在身份驗證環節,如客戶端驗證服務端時,服務端傳送自己的證書給客戶端,然後客戶端便可用根證書來識別服務端的證書是否是由根證書頒發的,即驗證服務端證書的可信性,從而達到身份驗證的目的。認證完成之後,客戶端便可以使用服務端的公鑰對資訊進行加密,然後再發往服務端,從而達到資訊保密(這種情況下服務端發往客戶端的訊息並不保密,因為服務端的公鑰是公開的).

雙向認證:在單向認證的前提上再加上了服務端對客戶端進行認證,從而保證了通訊的雙方都是可信的,這時候雙方的通訊內容都是保密的(只有用己方的私鑰才能解密)。

一般使用中只要單向認證就行了,即客戶端與服務端是n對1關係(實際中可能有幾個服務端和多個客戶端),客戶端連線服務端之後,有服務端傳送證書給客戶端,然後客戶端對服務端證書進行驗證,來確認服務端身份是否合法。

雙向認證則要求服務端也需要確認客戶端的身份,舉個例子,如工行的u盾內建了數字證書,這個就是客戶端的證書,用於向伺服器表明自己的身份有效性。

p.s.:很好的乙個部落格:tls系列的包括——ssl/tls

原理詳解

,openssl

與ssl

數字證書概念貼

,基於openssl

自建ca

和頒發ssl

證書1)  生成ca證書

#建立操作目錄

mkdir ca

cd ca 

#建立一些子目錄和初始檔案備用

mkdir certs crl newcerts private

echo "01" > serial

cp /dev/null index.txt

#拷貝openssl.cnf 到當前目錄

cp /etc/ssl/openssl.cnf openssl.cnf

#修改相應配置

vi openssl.conf

#將以下內容對應修改

[ca_default ]

dir             = ./democa              # where everything is kept

certs           = $dir/certs            # where the issued certs are kept

#為[ca_default ]

dir             = .                     # where everything is kept

certs           = $dir/certs            # where the issued certs are kept

#用如下命令生成ca證書:

opensslreq -new -x509 -keyout private/cakey.pem -out cacert.pem -days 365 -configopenssl.cnf

#之後會要求填寫資訊(如位址,機構,pem pass phrase等資訊),填寫完後根證書便生成完成了

2)     用根證書頒發證書

伺服器證書和客戶端證書的生成過程是一樣的,用根證書頒發兩份證書,乙個作為服務端證書,乙個作為客戶端證書即可,單向認證的話只需要生成乙個證書即可。下面以生成服務端的證書為例說明:

#用如下命令生成服務端證書的私鑰pem檔案和serverreq.pem

opensslreq -nodes -new -x509 -keyout serverkey.pem -out serverreq.pem -days 365-config openssl.cnf

#之後會要求你填寫相應資訊,其中common name 一項表示你的fqdn或者你的ip位址,email address 填空即可

#用serverkey.pem 檔案加密serverreq.pem 檔案,生成待認證的證書檔案tmp.pem

opensslx509 -x509toreq -in serverreq.pem -signkey serverkey.pem -out tmp.pem

#用根證書簽署(頒發)伺服器證書

opensslca -config openssl.cnf -policy policy_anything -out servercert.pem -infilestmp.pem

#之後需要輸入ca證書的pem pass phrase ,便可以生成服務端證書

#刪除待頒發的證書tmp.pem

rmtmp.pem

之後我們檢視下目錄newcerts,可以看到目錄下面多個個證書01.pem,這個證書也就是剛才根證書頒發的伺服器證書。

證書相關概念

2.uuid 裝置唯一識別符號 第一步 certificate signing request 請求證書 keychain access keys 中將新增一對非對稱金鑰對 public private key pair。同時,keychain 將生成乙個包含開發者身份資訊和公鑰的csr certi...

Docker相關概念及要點

1.基本概念 docker 的容器通過 linux 的命名空間完成了與宿主機程序的網路隔離。docker 為我們提供了四種不同的網路模式,host container none 和 bridge 模式。docker 預設的網路設定模式 網橋模式。我們通過 linux 的命名空間為新建立的程序隔離了檔...

About Hive相關概念及HiveQL操作

root bdpdatanode01 hive e select count 1 from prod bdw.dwd calendar root bdpdatanode01 hive s e select count 1 from prod bdw.dwd calendar 1 託管表和外部表 2 ...