openssl自簽名證書生成與單雙向驗證

2021-10-07 08:19:03 字數 3986 閱讀 8626

下面這個部落格解釋的很好: 

在保證了資料的安全性後,還需要保證資料的完整性、一致性以及資料**的可靠性。

對於資料的完整性和一致性,使用單向加密演算法,通過hash函式計算出資料獨一無二的校驗碼,這個校驗碼稱為「資訊摘要(message digest)」

對於資料**可靠性,使用自己的私鑰加密即可驗證身份,因為獲得資料後使用公鑰不能解密的就證明資料不是配對私鑰加密的。但是私鑰加密速度慢,所以只用私鑰加密摘要資訊,加密後的摘要資訊稱為「數字簽名(signature)」

使用者獲得數字簽名後的資料,首先使用資料**方的公鑰解密,這樣獲得了資料和資訊摘要部分,並確認了資料**的可靠性。由於這時候資料部分是沒有被加密的,所以使用者也可以使用同種單向加密演算法計算出摘要資訊,然後對比**方的摘要資訊和自己計算出的摘要資訊,如果相等則證明資料完全未被修改過,是完整一致的。

因此只要使用數字簽名就能保證資料**的可靠性、資料的完整性和一致性。

ca(certificate authority)是數字證書認證中心的簡稱,是指發放、管理、廢除數字證書的機構。

ca的作用是檢查證書持有者身份的合法性,並簽發證書(在證書上簽字),以防證書被偽造或篡改,以及對證書和金鑰進行管理。

遵循x.500標準,標識名的目的就是為每個網路實體提供乙個唯一的名字。為了達到這一目的,dn有一種分層結構。乙個dn由一些列的rdn(relative distinguished name,相對標識名)構成。

rdn的乘此結構依次為:

c = us, st = beijing, l = beijing, o = rtfm, ou = consulting, cn = eric

(c->country, st-> state or provice name, l->locality name, o->organization, ou->organization unit, cn->common name)

/home/gouxu/gx/key/

cd /home/gouxu/gx/key/

openssl genrsa -out ca.key 2048

引數說明:

genrsa:生成rsa秘鑰;

-out ca.key 生成的秘鑰檔案為ca.key;

2048: 秘鑰長度為2048.

openssl req -new -x509 -days 36500 -key ca.key -out ca.crt -subj "/c=cn/st=beijing/l=beijing/o=teamsun/ou=teamsun"

(-x509選項會生成自簽名證書。)

進入到key資料夾執行如下命令:

mkdir democa

cd democa/

mkdir newcerts

touch index.txt

echo '01' > serial

cd key/

openssl genrsa -out server.key 2048

openssl req -new -key server.key -out server.csr -subj "/c=cn/st=beijing/l=beijing/o=teamsun/ou=guoxu/cn=guoxu"

(沒有-x509選項則生成證書請求檔案。)

openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

gouxu@gouxu-pc:~/gx/key$ openssl verify -cafile ca.crt server.crt 

server.crt: ok

gouxu@gouxu-pc:~/gx/key$ 

cd key/

openssl genrsa -out client.key 2048

openssl req -new -key client.key -out client.csr -subj "/c=cn/st=beijing/l=beijing/o=teamsun/ou=guog/cn=guog"

注意:如果出現如下錯誤需要更改ou域與cn域重新生成證書請求檔案。

sign the certificate? [y/n]:y

failed to update database

txt_db error number 2

openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key

gouxu@gouxu-pc:~/gx/test$ openssl verify -cafile ca.crt client.crt 

client.crt: ok

gouxu@gouxu-pc:~/gx/test$

gouxu@gouxu-pc:~/gx/test$ openssl s_server -accept 10001 -key server.key -cert server.crt 

using default temp dh parameters

using default temp ecdh parameters

accept

gouxu@gouxu-pc:~$ openssl s_client -connect localhost:10001

connected(00000003)

(命令應該寫成 openssl s_client -connect localhost:10001 -cafile /tmp/key/ca.crt , 如果不倒入ca證書,雖然不影響ssl通道建立過程,但是在verify服務端證書的過程中會有錯誤提示,新增了ca證書後錯誤提示消失。)

gouxu@gouxu-pc:~/gx/test$ openssl s_server -accept 10001 -key server.key -cert server.crt -verify 5

gouxu@gouxu-pc:~/gx/test$ openssl s_client -connect localhost:10001 -cert client.crt -key client.key 

openssl生成自簽名證書

開啟終端,按如下步驟製作證書 1 會生成server.key檔案 openssl genrsa des3 out server.key 2048 2 建立證書請求,會生成server.csr。common name 網域名稱 openssl req new key server.key out se...

openssl生成自簽名證書

方法一 生成私鑰 openssl genrsa out server.key 1024 用私鑰生成自簽名的cer證書格式檔案 openssl req new x509 days 3650 key server.key out server.crt subj c cn st mykey l mykey...

OpenSSL證書生成

openssl是用於安全通訊的著名開源密碼學工具包,包括主要的密碼演算法 常見密碼和證書封裝功能。確認本機是否已安裝openssl openssl version a安裝 設定環境變數 例如工具安裝在c program files openssl win64,則將c program files op...