一.CA和證書
(一)概念:
(1)PKI: Public Key Infrastructure
(2)簽證機構(gòu):CA(Certificate Authority)
(3)注冊機構(gòu):
RA 證書吊銷列表:
CRL 證書存取庫: ?
X.509:定義了證書的結(jié)構(gòu)以及認(rèn)證協(xié)議標(biāo)準(zhǔn)
版本號 序列號 簽名算法 頒發(fā)者 有效期限 主體名稱 主體公鑰 CRL分發(fā)點 擴(kuò)展信息 發(fā)行者簽名
(二)證書的獲取
證書類型: 證書授權(quán)機構(gòu)的證書 服務(wù)器 用戶證書 ?
獲取證書兩種方法:
? 使用證書授權(quán)機構(gòu) 生成簽名請求(csr) 將csr發(fā)送給CA 從CA處接收簽名
? 自簽名的證書 自已簽發(fā)自己的公鑰
實驗:搭建ca
首先CA路徑為/etc/pki/CA,對應(yīng)的配置文件為 /etc/pki/tls/openssl.cnf,根據(jù)配置文件的格式進(jìn)行創(chuàng)建
步驟:在centos7中搭建證書
(1)首先要創(chuàng)建
touch /etc/pki/CA/index.txt——必須先創(chuàng)建此文件邦鲫,內(nèi)容可以為空,但是必須有這個文件
touch /etc/pki/CA/serial ——創(chuàng)建第一個序列號,內(nèi)容不能為空 echo 99(或01,序號隨便設(shè)置)> /etc/pki/CA/serial
(2)先生成私鑰 (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem -des3 1024)——該格式是根據(jù)配置文件的格式設(shè)置的,要求私鑰的目錄在private下秧耗,并且以.pem后綴钉迷。安全起見將文件權(quán)限設(shè)置為600,通過數(shù)字簽名加密算法對文件簽名羞芍,生成的私鑰才對稱的加密算法生成。
(3)生成自簽名證書(用私鑰匙生成證書)
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days -7300 -out /etc/pki/CA/cacert.pem——申請生成自簽名證書郊艘,設(shè)置默認(rèn)有效期為兩年
此時在centos7中自簽名證書已搭建好荷科,將文件導(dǎo)入windows中唯咬,查看
此時,點擊安裝證書畏浆,點擊下一步胆胰,選擇證書安裝路徑,然后選擇證書存儲為如圖
然后按照提示選擇即可
(4)頒發(fā)證書
在centos6中生成私鑰刻获,它需要被頒發(fā)證書
(umask 066; openssl genrsa -out /etc/pki/tls/private/app.key -des3 -1024)
申請生成文件證書:
openssl req -new -key /etc/pki/tls/private/app.key -days 3650 -out /etc/pki/tls/app.csr
該文件需要發(fā)給centos7進(jìn)行審核蜀涨,所以需要些申請文件,申請時間可以不寫蝎毡,因為需要centos7來確定有效時間
注意事項:
countryName = 寫的國家名字必須和centos7中的寫的一樣
stateOrProvinceName = 省市必須相同
organizationName = 公司名必須一樣
(5)將文件發(fā)給centos7審核 scp app.csr 192.168.136.170:/etc/pki/CA
(6)CA簽署證書厚柳,并將證書發(fā)給申請者
openssl ca -in /etc/pki/CA/app.csr /etc/pki/CA/certs/app.crt -days 3650
給申請的文件頒發(fā)證書,并人為指定有效期為十年
(7)將生成的證書文件發(fā)給centos6
scp /etc/pki/CA/certs/app.crt 192.168.136.134:/etc/pki/tls/certs
將申請的證書導(dǎo)出到windows,查看
(8)查看證書信息
openssl x509 -in app.crt -noout -text:查看所有信息
openssl ca -status serial:查看序列號狀態(tài)
實驗2:生成一個子根證書
步驟:
(1)在centos6中沐兵,同樣先創(chuàng)建
touch /etc/pki/CA/index.txt
echo 01 > /etc/pki/CA/serial
(2)生成私鑰
(umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem -des3 1024)
(3)申請證書文件
openssl req -new -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/subca.csr
(4)發(fā)給centos7進(jìn)行審核
scp subca.csr 192.168.136.170:/etc/pki/CA
(5)在centos7上别垮,進(jìn)行審核并頒發(fā)證書
openssl ca -in subca.csr -out /etc/pki/CA/certs/subca.crt -days 3650
(6)生成后,scp subca.crt 192.168.136.134:/etc/pki/CA/cacert.pem
(7)sz該證書到windows中來查看
實驗3:
當(dāng)不想要這些證書時痒筒,刪除證書的步驟
(1)首先創(chuàng)建吊銷文件序列號
echo 01 > /etc/pki/CA/crlnumber
(2)openssl ca -revoke /etc/pki/CA/newcerts/99.pem——序列號
(3)更新證書吊銷列表
openssl ca -in /etc/pki/CA/crl/crl.pem
(4)最后通過查看吊銷列表來確定是否刪除成功
openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text
二.ssh應(yīng)用
ssh:安全遠(yuǎn)程登錄 使用的默認(rèn)的端口為22
(一)具體的軟件實現(xiàn):
OpenSSH: ssh協(xié)議的開源實現(xiàn)宰闰,CentOS默認(rèn)安裝
dropbear:另一個開源實現(xiàn) ?
(二)SSH協(xié)議版本
v1: 基于CRC-32做MAC,不安全簿透;man-in-middle
v2:雙方主機協(xié)議選擇安全的MAC方式
基于DH算法做密鑰交換移袍,基于RSA或DSA實現(xiàn)身份認(rèn)證 ?
ssh的配置文件分為客戶端配置文件和服務(wù)端配置文件
客戶端:/etc/ssh/ssh_config
服務(wù)端:/etc/ssh/sshd_config
(三)ssh的用法
ssh -p:指定端口連接
ssh -b :指定以某ip地址來連接遠(yuǎn)程ip:ssh -b 192.168.136.178 192.168.136.177——用178的地址來連接其他ip(針對客戶端主機上一個網(wǎng)卡設(shè)置兩個ip地址的情況)
(四)登錄方式:
基于用戶登錄口令實現(xiàn)
基于KEY的實現(xiàn)
(1)基于用戶登錄
需要輸入口令
實現(xiàn)原理
1 客戶端發(fā)起ssh請求,服務(wù)器會把自己的公鑰發(fā)送給用戶 ?
2 用戶會根據(jù)服務(wù)器發(fā)來的公鑰對密碼進(jìn)行加密 ?
3 加密后的信息回傳給服務(wù)器老充,服務(wù)器用自己的私鑰解密葡盗, 如果密碼正確,則用戶登錄成功啡浊,不正確則要重新驗證
(2)基于key的驗證
步驟
1 在客戶端生成密鑰對
ssh-keygen -t rsa -p ' '(表示不加密) -f——后跟路徑觅够,可以不寫默認(rèn)路徑為~/.ssh/id_rsa
2 把公鑰文件傳輸?shù)揭B接的服務(wù)器的家目錄
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.136.134
3 對私鑰加密 ssh-keygen -p
設(shè)置成功后以后再連接其他遠(yuǎn)程主機的時候只需要輸入私鑰密碼即可
4 如果私鑰密碼也不想輸入,可以臨時開啟一個代理,只需要第一次連接后輸入一次私鑰密碼巷嚣,以后連接就不需要了
ssh-agent bash
ssh-add
實驗在xshell中實現(xiàn)基于key的方式登錄
1打開x-shell軟件的工具選項喘先,選擇如圖
2 選擇秘鑰類型
3 自動生成隨機數(shù)后,點擊下一步
4 設(shè)置加密口令廷粒,和用戶名稱并保存文件到桌面上
5 通過rz命令將文件導(dǎo)入x-shell 通過cp id_rsa_1024_用戶名 .ssh/autorized_keys
6選擇用戶登錄方式
基于ssh端口轉(zhuǎn)發(fā)的應(yīng)用
(一)ssh的作用:
5此時‘隧道建立成功’芋酌,centos6可以通過redhat5突破防火墻的設(shè)置與7進(jìn)行連接
SSH 會自動加密和解密所有 SSH 客戶端與服務(wù)端之間的網(wǎng)絡(luò)數(shù)據(jù)窘拯。 但是,SSH 還能夠?qū)⑵渌?TCP 端口的網(wǎng)絡(luò)數(shù)據(jù)通過 SSH 鏈接來轉(zhuǎn)發(fā) 坝茎,并且自動提供了相應(yīng)的加密及解密服務(wù)涤姊。這一過程也被叫做“隧道” (tunneling),這是因為 SSH 為其他 TCP 鏈接提供了一個安全的通 道來進(jìn)行傳輸而得名嗤放。例如思喊,Telnet,SMTP次酌,LDAP 這些 TCP 應(yīng)用均 能夠從中得益恨课,避免了用戶名舆乔,密碼以及隱私信息的明文傳輸。而與此 同時庄呈,如果工作環(huán)境中的防火墻限制了一些網(wǎng)絡(luò)端口的使用蜕煌,但是允許 SSH 的連接派阱,也能夠通過將 TCP 端口轉(zhuǎn)發(fā)來使用 SSH 進(jìn)行通訊 ?
SSH 端口轉(zhuǎn)發(fā)能夠提供兩大功能: ?
加密 SSH Client 端至 SSH Server 端之間的通訊數(shù)據(jù) ?
突破防火墻的限制完成一些之前無法建立的 TCP 連接
(1)遠(yuǎn)程轉(zhuǎn)發(fā)
設(shè)計拓?fù)潢P(guān)系诬留,以三個主機為例子,主機分為A,B,C贫母。其中A主機為外部主機文兑,B作為跳轉(zhuǎn)機,C為目標(biāo)主機
實驗?zāi)康模?br> 假設(shè)B與C在同一個局域網(wǎng)中腺劣,中間有防火墻作為保護(hù)绿贞,而A屬于外網(wǎng)中的一個主機,它無法直接連接C機器橘原,所以通過SSH策略來實現(xiàn)
實現(xiàn)步驟:
1 首先選擇3個虛擬機籍铁,centos7,centos6,redhat5
2 檢查三個主機之間的聯(lián)通,centos6為外部主機趾断,在centos7中對centos6開啟防火墻策略:iptables -A INPUT -s 192.168.25.188 -j REJECT
3 確認(rèn)redhat5沒有9527端口打開拒名,此時在該虛擬機上執(zhí)行
ssh -R 9527:192.168.25.199:25 -Nf 192.168.25.188
此時9527端口會在centos6中打開,而不是在本機上打開
4 在centos6中執(zhí)行telnet 127.0.0.1 9527
(2)本地轉(zhuǎn)發(fā)
以centos7作為外部主機增显,以redhat5作為中間跳轉(zhuǎn)機
1 首先在centos6上對centos7設(shè)置防火墻策略
iptables -A INPUT -s 192.168.25.199 -j REJECT
此時centos6無法直接和centos7連接
2 在centos7本機上執(zhí)行ssh -L 9527:192.168.25.188:23 -Nf 192.168.25.80
3 telnet 127.0.0.1 9527
(3)動態(tài)端口轉(zhuǎn)發(fā):
實現(xiàn)功能:當(dāng)用firefox訪問internet時,本機的1080端口做為代理服務(wù) 器脐帝,firefox的訪問請求被轉(zhuǎn)發(fā)到sshserver上同云,由sshserver 替之訪問internet
1 在centos7對centos6設(shè)置防火墻策略,使6無法連接
2 在6上執(zhí)行 ssh -D 1080(端口) 192.168.25.80(redhat5)
3 執(zhí)行 curl --socks5 127.0.0.1 http://192.168.25.199