十二、HTTPS安全證書訪問(wèn)連接實(shí)踐配置
(一)網(wǎng)絡(luò)安全涉及的問(wèn)題
①. 網(wǎng)絡(luò)安全問(wèn)題-數(shù)據(jù)機(jī)密性問(wèn)題
傳輸?shù)臄?shù)據(jù)可能會(huì)被第三方隨時(shí)都能看到
②. 網(wǎng)絡(luò)安全問(wèn)題-數(shù)據(jù)完整性問(wèn)題
傳輸?shù)臄?shù)據(jù)不能隨意讓任何人進(jìn)行修改
③. 網(wǎng)絡(luò)安全問(wèn)題-身份驗(yàn)證問(wèn)題
第一次通訊時(shí),需要確認(rèn)通訊雙方的身份正確
(二)網(wǎng)絡(luò)安全涉及的問(wèn)題
①. 網(wǎng)絡(luò)安全問(wèn)題-數(shù)據(jù)機(jī)密性問(wèn)題解決
a) 利用普通加密算法解決機(jī)密性
利用相應(yīng)算法,對(duì)傳輸數(shù)據(jù)(明文數(shù)據(jù))進(jìn)行加密(密文數(shù)據(jù));再利用對(duì)應(yīng)算法,將加密數(shù)據(jù)解密變?yōu)檎鎸?shí)數(shù)據(jù)
優(yōu)點(diǎn):實(shí)現(xiàn)了數(shù)據(jù)機(jī)密傳輸,避免了明文傳輸數(shù)據(jù)的危險(xiǎn)性。
缺點(diǎn):利用加密算法,將明文改密文,如果第三方獲得加密算法,即可將傳輸密文再次變?yōu)槊魑?
b) 利用對(duì)稱加密算法解決機(jī)密性(重要的一種加密方式)
對(duì)稱加密算法就好比將普通算法的規(guī)則手冊(cè)放入到了保險(xiǎn)柜里,只有獲取保險(xiǎn)柜和保險(xiǎn)柜鑰匙才能獲取《算法手冊(cè)》
優(yōu)點(diǎn):密鑰加密算法計(jì)算速度非???;解決了普通加密算法的安全問(wèn)題
缺點(diǎn):加解密過(guò)程的安全性完全依賴于密鑰,并且對(duì)稱加密密鑰是公開的,當(dāng)通訊加密對(duì)象過(guò)多時(shí),無(wú)法解決密鑰管理問(wèn)題。
②. 網(wǎng)絡(luò)安全問(wèn)題-數(shù)據(jù)完整性問(wèn)題解決
a) 利用單項(xiàng)加密算法(全網(wǎng)備份數(shù)據(jù)完整性)
根據(jù)數(shù)據(jù)生成特征碼(數(shù)據(jù)指紋信息);接收數(shù)據(jù)方獲取數(shù)據(jù)信息算出特征碼,驗(yàn)證是否與發(fā)送過(guò)來(lái)的特征碼一致
若特征碼一致,表示數(shù)據(jù)完整性沒被破壞;若特征碼不一致,表示數(shù)據(jù)已被破壞,直接丟棄
****************************************************************************
擴(kuò)展說(shuō)明:
01:不同數(shù)據(jù)的特征碼(數(shù)據(jù)指紋信息)是不可能一致的
單項(xiàng)加密算法特征
· 數(shù)據(jù)輸入一樣,特征碼信息輸出必然相同
· 雪崩效應(yīng),輸入的微小改變,將造成輸出的巨大改變
· 定長(zhǎng)輸出,無(wú)論源數(shù)據(jù)多大,但結(jié)果都是一樣的
· 不可逆的,無(wú)法根據(jù)數(shù)據(jù)指紋,還原出原來(lái)的數(shù)據(jù)信息。
****************************************************************************
優(yōu)點(diǎn):有效的解決了數(shù)據(jù)完整性問(wèn)題
缺點(diǎn):沒有考慮中間人攻擊對(duì)數(shù)據(jù)信息的影響
b) 利用單項(xiàng)加密算法(加密特征碼)
利用對(duì)稱加密算法對(duì)數(shù)據(jù)加密的同時(shí),也對(duì)特征碼進(jìn)行加密;
接收方擁有和發(fā)送方一樣的密鑰,才可以解密加密后的數(shù)據(jù)和特征碼
而中間人加密的特征碼是沒有辦法讓接收方進(jìn)行解密的,所以接收方獲取不了特征碼,直接丟棄數(shù)據(jù)
****************************************************************************
擴(kuò)展說(shuō)明:
01:那么對(duì)稱密鑰如何有效的讓通訊雙方獲取呢
需要進(jìn)行對(duì)稱密鑰協(xié)商過(guò)程,即通過(guò)密鑰交換機(jī)制(Internet key exchange IKE)
實(shí)現(xiàn)密鑰交換機(jī)制的協(xié)議稱為diffie-hellman協(xié)議
③. 網(wǎng)絡(luò)安全問(wèn)題-身份驗(yàn)證問(wèn)題解決
a)利用非對(duì)稱密鑰加密算法(公鑰加密算法)
發(fā)送方建立私鑰和公鑰,將公鑰發(fā)送給接收方,從而實(shí)現(xiàn)發(fā)送數(shù)據(jù)方的身份驗(yàn)證
讓你的母親驗(yàn)證你的爸爸身份信息,你的母親就稱為證書頒發(fā)機(jī)構(gòu)
公鑰信息在網(wǎng)站訪問(wèn)過(guò)程中,被稱為證書(身份證)
網(wǎng)絡(luò)安全問(wèn)題結(jié)論:實(shí)現(xiàn)網(wǎng)絡(luò)安全性,需要解決問(wèn)題的順序?yàn)?1. 解決身份驗(yàn)證問(wèn)題
2. 解決數(shù)據(jù)完整性問(wèn)題
3. 解決數(shù)據(jù)機(jī)密性問(wèn)題
(三)網(wǎng)絡(luò)安全證書由來(lái):
根據(jù)上述結(jié)論可知,網(wǎng)絡(luò)安全性最首先要解決的就是身份驗(yàn)證問(wèn)題;
而解決身份驗(yàn)證問(wèn)題,最主要的方式就是借助私鑰和公鑰
而最主要的公鑰信息獲取就變得尤為重要;利用第三方公正者,公正公鑰信息
目前標(biāo)準(zhǔn)的證書存儲(chǔ)格式是x509,還有其他的證書格式,需要包含的內(nèi)容為:
證書==身份證
? 公鑰信息,以及證書過(guò)期時(shí)間
? 證書的合法擁有人信息
? 證書該如何被使用(不用關(guān)注)
? CA頒發(fā)機(jī)構(gòu)信息
? CA簽名的校驗(yàn)碼
(四) OpenSSL軟件詳細(xì)說(shuō)明
獲取OpenSSL軟件的版本信息:
rpm -qa openssl
openssl version <- 查看openssl版本信息
獲取OpenSSL配置文件信息:
/etc/pki/tls/openssl.cnf <- openssl配置文件,主要用于配置成私有ca時(shí)進(jìn)行使用
說(shuō)明:基本上openssl配置文件不需要運(yùn)維過(guò)多修改配置
利用openssl軟件實(shí)現(xiàn)HTTPS訪問(wèn)過(guò)程
實(shí)現(xiàn)HTTPS:
第一步:創(chuàng)建出一個(gè)私鑰文件(出生證明) --- 運(yùn)維人員需要會(huì)
openssl genrsa 2048 >server.key <- 創(chuàng)建私鑰信息,并指定私鑰的長(zhǎng)度為2048,并將生成
的私鑰信息保存在一個(gè)文件中
openssl genrsa -out server.key 2048 <- 將私鑰信息直接進(jìn)行保存,加密長(zhǎng)度一定要放在輸出
文件后面
(umask 077;openssl genrsa -out server1024.key 1024)
<- 利用小括號(hào),實(shí)現(xiàn)子shell功能,
臨時(shí)修改umask,使之創(chuàng)建的私鑰文件權(quán)限為600
第二步:生成證書文件信息
①. 生成自簽發(fā)證書 --- 運(yùn)維人員可以自行操作
[root@NFS-server-01 ~]# openssl req -new -x509 -key server.key -out server.crt -days 365
req <- 用于請(qǐng)求創(chuàng)建一個(gè)證書文件
new <- 表示創(chuàng)建的是新的證書
x509 <- 表示定義證書的格式為標(biāo)準(zhǔn)格式
key <- 表示調(diào)用的私鑰文件信息
out <- 表示輸出證書文件信息
days <- 表示證書的有效期
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN <- 定義生成證書的國(guó)家
State or Province Name (full name) []:BJ <- 定義生成證書的省份
Locality Name (eg, city) [Default City]:BJ <- 定義生成證書的城市
Organization Name (eg, company) [Default Company Ltd]:oldboy <- 定義生成證書的組織
Organizational Unit Name (eg, section) []:it <- 定義生成證書的職能部門
Common Name (eg, your name or your server's hostname) []:oldboy.com.cn <- 定義主機(jī)服務(wù)器名稱
說(shuō)明:此輸出信息非常重要,客戶端在獲取證書前,會(huì)利用主機(jī)名與相應(yīng)服務(wù)器之間建立連接,然后獲得證書
Email Address []:
②. 向證書頒發(fā)機(jī)構(gòu)申請(qǐng)證書 --- ca證書版本機(jī)構(gòu)完成
生成請(qǐng)求證書文件 (戶口本) --- 運(yùn)維人員完成
openssl req -new -key httpd.key -out httpd.csr
獲取得到證書文件 (身份證) --- ca頒發(fā)機(jī)構(gòu)完成
省略
? 第三步:配置網(wǎng)站服務(wù),加載私鑰和證書信息
server {
server_name YOUR_DOMAINNAME_HERE;
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
}
server {
listen 80;
server_name www.etiantian.org;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
listen 443;
server_name www.etiantian.org;
ssl on;
ssl_certificate /server/key/server.crt;
ssl_certificate_key /server/key/server.key;
root html/www;
index index.html index.htm;
}
第四步:利用瀏覽器訪問(wèn)測(cè)試
ssl模塊官方鏈接:http:///en/docs/http/ngx_http_ssl_module.html
|