天天看點

RHS333-2加密算法

<b>一、對稱算法:Hash算法</b>

<b></b>

1、hash算法主要用于保證資料的完整性

2、相同的密碼通過hash算法加密後,其hash值也不會一樣

[root@station1 ~]# md5sum yum_forAS4.tar.gz

24d703673cb83aade16065ed402dea50  yum_forAS4.tar.gz

[root@station1 ~]# md5sum -b yum_forAS4.tar.gz  

24d703673cb83aade16065ed402dea50 *yum_forAS4.tar.gz

#hash值未變,說明yum_forAS4.tar.gz資料未變修改

<b>二、非對稱算法:數字證書</b>

1、私鑰:用于授權認證

2、公鑰:用于資料加密

<b>三、建立一個CA中心(station1)</b><b></b>

1、修改/etc/pki/tls/openssl.conf                      

[root@station1 ~]# vi /etc/pki/tls/openssl.cnf

[ CA_default ]

dir            = /etc/pki/CA           

#ca所有資訊存放目錄

certs           = $dir/certs         

# 存放公鑰

crl_dir         = $dir/crl             

#證書吊銷清單,存放吊銷的證書

database        = $dir/index.txt       

# 證書索引檔案,證書頒發的資訊,

new_certs_dir   = $dir/newcerts      

#存放經過CA中心簽名的證書的副本,吊銷證書時需要副本

certificate     = $dir/my-ca.crt     

#CA的公鑰,任何人都可下載下傳使用

serial          = $dir/serial        

#每做一次簽名,此号加1,即頒發證書序列号

crlnumber       = $dir/crlnumber  

#每吊銷一次證書,此号加1,即吊銷證書序列号

crl             = $dir/my-ca.crl   #吊銷證書清單,即黑名單清單,客戶自動下載下傳

private_key     = $dir/private/my-ca.key    #CA中心的私鑰

RANDFILE        = $dir/private/.rand        # private random number file

x509_extensions = usr_cert              # The extentions to add to the cert

# Comment out the following two lines for the "traditional"

# (and highly broken) format.

name_opt        = ca_default            # Subject Name options

cert_opt        = ca_default            # Certificate field options

# Extension copying option: use with caution.

# copy_extensions = copy

# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs

# so this is commented out by default to leave a V1 CRL.

# crlnumber must also be commented out to leave a V1 CRL.

# crl_extensions        = crl_ext

default_days    = 365               # 證書有效期,預設365天、防止證書丢失帶來風險

default_crl_days= 30                    

# 每30更新一次crl清單 

policy          = policy_match

 # For the CA policy

 [ policy_match ]

 countryName             = match            

#用戶端在生成crt時字段必須完全比對

stateOrProvinceName     = match

organizationName      = match

organizationalUnitName  = optional     #可不一樣

commonName              = supplied       

#必須不一樣,代表的唯一身份的

emailAddress            = optional

[ req_distinguished_name ]

countryName             = Country Name (2 letter code)  

countryName_default         = CN   

countryName_min            = 2

countryName_max            = 2

stateOrProvinceName         = State or Province Name (full name)

stateOrProvinceName_default      = Beijing

localityName             = Locality Name (eg, city)

localityName_default         = Beijing

0.organizationName          = Organization Name (eg, company)

0.organizationName_default      = bjicc,Inc.

2、生成相關目錄和檔案

[root@station1 CA]# mkdir {certs,newcerts,crl,private}

[root@station1 CA]# touch index.txt

[root@station1 CA]# echo 00 &gt;serial

3、生成CA的私鑰和公鑰

[root@station1 CA]# (umask 077; openssl genrsa -out private/my-ca.key -des3 2048)  #生成CA中心自己的私鑰

[root@station1 CA]# openssl req -new -x509 -key private/my-ca.key -days 365 -out my-ca.crt  #根據私鑰生成CA中心自己的公鑰

[root@station1 CA]# scp my-ca.crt 192.168.32.41:/root/

#将CA中心的公鑰發送給客戶,客戶需要根據此公鑰确認其他證書的合法性

<b>四、伺服器(station2)生成私鑰并以此産生一個證書請求檔案,CA中心對證書簽名</b><b></b>

[root@station2 ~]# (umask 077;openssl genrsa -out /etc/pki/tls/dovecot.key -des3 2048)   #生成私鑰dovecot.key

[root@station2 ~]# openssl req -new -key /etc/pki/tls/dovecot.key -out /etc/pki/tls/dovecot.csr 

#根據私鑰來生成證書請求檔案,證書請求檔案中資訊必須和ca中心規定的完全一樣

Country Name (2 letter code) [GB]:CN 

#必須與CA中心裡的完全一樣

State or Province Name (full name) [Berkshire]:Beijing

Locality Name (eg, city) [Newbury]:Beijing

Organization Name (eg, company) [My Company Ltd]: bjicc,Inc.

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) []:rhce.kvm.com

Email Address []:

[root@station2 ~]# openssl req -in /etc/pki/tls/dovecot.csr -noout -text       #檢視證書請求檔案

[root@rhce ~]#scp dovecot.csr 192.168.32.31:/root/  

#将證書請求檔案發送給CA中心

[root@station1 ~]# openssl ca -in dovecot.csr -out dovecot.crt

#CA中心對證書請求檔案簽名

[root@station1 ~]# scp dovecot.crt 192.168.32.41:/root/

[root@station1 ~]#cp dovect.crt /etc/pki/tls/certs/dovecot.pem 

#将公鑰複制成dovecot的公鑰

[root@station1 ~]#cp rhce.key /etc/pki/tls/private/dovecot.pem

#将rhce自生成的私鑰複制成dovecot的私鑰

[root@station1 ~]#vi /etc/dovecot.conf  

#dovecot利用CA簽發的公鑰和自産的私鑰進行認證

ssl_cert_file = /etc/pki/tls/certs/dovecot.pem

ssl_key_file = /etc/pki/tls/private/dovecot.pem

sl_key_password = xiaobai  #在生産證書時,設定的對其密碼保護

[root@station2 ~]#service dovecot restart 

<b>五、用戶端(station6)測試</b>

[root@station6 ~]#scp 192.168.32.31:/etc/pki/CA/my-ca.crt /root/.     #下載下傳CA中心公鑰

[root@station6 ~]#mkdir /root/.mutt    #配置mutt環境變量

[root@station6 ~]#mv /root/my-ca.crt /root/.mutt/my-ca.crt

[root@station6 ~]# vi .muttrc    #加入如下行

set certificate_file=~/.mutt/my-ca.crt

[root@station6 ~]# mutt -f impas://[email protected]

#再次打開mutt,證書提示不見了,因為此時的dovecot證書已經過CA中心的簽名,mutt已經可以識别了

<b>六、證書的吊銷</b>

1、在伺服器(station2)上查出證書的序列号

[root@station2 ~]#openssl x509 -in /etc/pki/tls/certs/dovecot.pem -noout -serial –subject

2、檢視CA中心(station1)裡證書的狀态:

[root@station1 ~]# more /etc/pki/CA/index.txt   #此時證書狀态為 V,表示可用

3、CA中心得到證書的序列号和subject就可以定位證書并登出:

[root@station1 ~]#openssl ca -revoke /etc/pki/CA/newcerts/00.pem 

#吊銷證書

[root@station1 ~]#openssl ca -gencrl -out /etc/pki/CA/crl/my-ca.crl 

#更新被吊銷證書清單檔案,此時證書才真正被吊銷,index.txt中證書狀态變為R,标明revoked。

[root@station1 ~]#openssl crl -in my-ca.crl -outform DER -out my-ca-der.crl

# firefox,thunderbird隻支援DER格式的crl,是以還需要生成另外一個crl檔案

[root@station1 ~]#openssl crl -in my-ca.crl -noout –text  #檢視被吊銷證書 

最後要求複制my-ca.crl和my-ca-der.crl檔案到http伺服器,供别人下載下傳,否則用戶端仍舊不知道哪些證書被吊銷了

<b>七、關鍵指令</b>

openssl genrsa 2048 my-ca.key                          #生成私鑰

openssl req -new -x509 -key my-ca.key &gt; my-ca.crt      #生成公鑰

mkcert.sh                                              #生成自簽名公鑰證書

openssl req -new -key dovecot.key -out dovecot.csr     #生成證書簽名請求檔案

openssl ca -in dovecot.csr -out dovecot.crt            #對證書進行簽名

openssl ca -revoke 00.pem                              #吊銷證書

openssl ca -gencrl -out my-ca.crl                      #更新crl清單

<b>八、GnuPG對資料加密解密</b>

gpg主要用來保證資料的完整性

環境:station2.kvm.com 192.168.32.32

使用者:netsword zhxiaoyu

1、生成公私鑰

[netsword@station2 .gnupg]$ gpg --gen-key      #輸入資訊,預設即可

請選擇您要使用的密鑰種類:

   (1) RSA and RSA (default)

   (2) DSA and Elgamal

   (3) DSA (僅用于簽名)

   (4) RSA (僅用于簽名)

您的選擇?

RSA 密鑰長度應在 1024 位與 4096 位之間。

您想要用多大的密鑰尺寸?(2048)

您所要求的密鑰尺寸是 2048 位

請設定這把密鑰的有效期限。

         0 = 密鑰永不過期

      &lt;n&gt;  = 密鑰在 n 天後過期

      &lt;n&gt;w = 密鑰在 n 周後過期

      &lt;n&gt;m = 密鑰在 n 月後過期

      &lt;n&gt;y = 密鑰在 n 年後過期

密鑰的有效期限是?(0)

密鑰永遠不會過期

以上正确嗎?(y/n)y

真實姓名:netsword

電子郵件位址:[email protected]

注釋:

您標明了這個使用者辨別:

    “netsword &lt;[email protected]&gt;”

更改姓名(N)、注釋(C)、電子郵件位址(E)或确定(O)/退出(Q)?o

您需要一個密碼來保護您的私鑰。

[netsword@station2 .gnupg]$ gpg --list-keys          #顯示公鑰

[netsword@station2 .gnupg]$ gpg --list-secret-keys   #顯示私鑰

[zhxiaoyud@station2 .gnupg]$ gpg --gen-key         #生成zhxiaoyu的公鑰

2、導出、導入公鑰

[netsword@station2 .gnupg]$ gpg --export -a netsword &gt;netsword.key

#導出netsword的公鑰,要指定使用者資訊

[zhxiaoyud@station2 .gnupg]$ gpg --export -a zhxiaoyu &gt;zhxiaoyu.key  

#導出zhxiaoyu的公鑰

[netsword@station2 .gnupg]$ gpg --import zhxiaoyu.key 

#導入zhxiaoyu的公鑰

[zhxiaoyud@station2 .gnupg]$ gpg --import netsowrd.key    

#導入netsword的公鑰

3、利用公鑰對檔案加密、解密

[netsword@station2 .gnupg]$ gpg -ear zhxiaoyu  ~/message.txt --output /tmp/message.txt.asc

#加密檔案  

[zhxiaoyud@station2 .gnupg]$ gpg --output ~/message.txt  -d /tmp/message.txt.asc 

#解密檔案 

本文轉自netsword 51CTO部落格,原文連結:http://blog.51cto.com/netsword/509270

繼續閱讀