公鑰加密也稱為非對稱加密咏连,公鑰是成對生成的笛辟。服務(wù)器將自己的公鑰公開任何主機(jī)都可以得到此公鑰,私鑰只能自己保存宫患。主機(jī)使用服務(wù)器的公鑰對數(shù)據(jù)進(jìn)行加密刊懈,然后將數(shù)據(jù)發(fā)送給服務(wù)器,此時的數(shù)據(jù)就只有服務(wù)器的私鑰可以解密撮奏。這樣即使別人竊取來了數(shù)據(jù)沒有私鑰也無法對數(shù)據(jù)進(jìn)行解密俏讹。
實(shí)驗(yàn)場景:CentOS7的passwd文件需要通過公網(wǎng)傳送給CentOS6服務(wù)器,如何保證passwd文件不被公網(wǎng)上的惡意用戶竊刃蟮酢泽疆?公鑰加密就是一個比較好的辦法。
CentOS7使用CentOS6的公鑰將passwd文件進(jìn)行加密玲献,加密后的數(shù)據(jù)只有CentOS6的私鑰可以界面殉疼,而擁有私鑰的也只有CentOS6自己。這樣即使文件在公網(wǎng)上惡意用戶竊取也無法進(jìn)行解密捌年,保障了數(shù)據(jù)通信的安全瓢娜。
實(shí)驗(yàn)說明:在實(shí)驗(yàn)當(dāng)中全部使用內(nèi)網(wǎng)環(huán)境模擬數(shù)據(jù)在公網(wǎng)的傳輸。
一礼预、公鑰的創(chuàng)建
分別在CentOS7與CentOS6上創(chuàng)建各自的公鑰與私鑰
使用gpg --gen-key
創(chuàng)建公鑰與私鑰眠砾。創(chuàng)建過程中會提示你選擇各種參數(shù)。我在下圖中都做了詳解
CentOS6與CentOS7的創(chuàng)建方式是一樣的托酸,所以在兩邊用一樣的方式不一樣的名稱創(chuàng)建兩個不同的密鑰對褒颈。
二柒巫、分別查看CentOS6與CentOS7中生成的公鑰私鑰
gpg --list-key
可以查看當(dāng)前主機(jī)的所有公鑰信息,包括自己創(chuàng)建的公鑰谷丸,與導(dǎo)入的公鑰堡掏。
三、發(fā)送公鑰
將CentOS6的中的公鑰使用scp
命令復(fù)制到CentOS7中
#centos6
[root@CentOS6 /]$ gpg -a --export -o centos6.key #導(dǎo)出centos6的公鑰
[root@CentOS6 /]$ scp centos6.key 10.0.0.57:/app #將centos6的公鑰復(fù)制一份到centos7中
在centos7中導(dǎo)入centos6發(fā)來的公鑰
#centos7
[root@CentOS7 /]$ gpg --import /app/centos6.key
[root@CentOS7 /]$ gpg: key 1E6D6348: public key "centos6" imported
[root@CentOS7 /]$ gpg: Total number processed: 1
[root@CentOS7 /]$ gpg: imported: 1 (RSA: 1)
查看已經(jīng)導(dǎo)入的公鑰信息刨疼,上面那個名為cento7的公鑰信息泉唁,剛剛本機(jī)創(chuàng)建的公鑰。下面centos6時導(dǎo)入后的公鑰信息揩慕。
四亭畜、加密文件
使用gpg -e -r centos6
命令對指定的文件進(jìn)行加密, 隨后系統(tǒng)會詢問你是否使用這個公鑰加密漩绵?輸入y
即可贱案。加密完成后會在源文件的目錄下有一個同名以gpg結(jié)尾的文件,就是加密完成的文件止吐。你可以使用cat
命令查看此文件是一堆亂碼麦牺。
使用centos6的公鑰加密的文件拂苹,只能有cento6的私鑰解密此文件。而只有centos6自己才有私鑰,所以即使別人截獲此文件也是無法解密的尚蝌。
#centos7
[root@CentOS6 /]$ gpg -e -r centos6 /etc/passwd #用centos6的公鑰信息加密passwd文件
[root@CentOS6 /]$ Use this key anyway? (y/N) y #系統(tǒng)會會詢問你是否使用這個公鑰加密彬犯,y
[root@CentOS6 /]$ ls /etc/passwd.gpg #加密完成后的文件
[root@CentOS6 /]$ scp /etc/passwd.gpg 10.0.0.57:/app #將加密后的文件傳復(fù)制到centos6中
五脓魏、解密文件
#centos6
[root@CentOS6 /]$ gpg -d /app/passwd.gpg #用自己的私鑰解密加密文件颤殴,默認(rèn)輸出到屏幕
[root@CentOS6 /]$ gpg -o /app/passwd -d /app/passwd.gpg #用私鑰解密并輸出到文件中
gpg: encrypted with 1024-bit RSA key, ID D0C0C3D0, created 2017-09-08
"centos6"
六、查看文件
查看文件可以正常顯示