- CA(Certificate Authority):證書頒發機構,負責簽發和管理數字證書,驗證證書持有者的身份。
- HTTPS:基于 SSL/TLS 協議的 HTTP,通過證書實現客戶端與服務器的身份驗證和數據加密。
HTTPS=HTTP+SSL/TLS
HTTP:以明文的方式通過 80端口進行數據傳輸
HTTPS:以數據加密的方式通過443端口進行數據傳輸
連接建立過程
客戶端發起請求:客戶端向服務器發送一個 HTTPS 請求,請求中包含客戶端支持的加密算法、SSL/TLS 協議版本等信息,隨機生成一組32字節數據random_c。
服務器響應:服務器收到請求后,選擇雙方都支持的加密算法和協議版本,并將自己的數字證書發送給客戶端,公鑰加密數據隨機生成一組32個字節的數據random_s。
客戶端驗證與密鑰交換:客戶端驗證服務器的數字證書,并從中獲取服務器的公鑰。然后客戶端生成一個隨機的對稱加密密鑰pre_master,使用服務器的公鑰對其進行加密,并發送給服務器。
連接建立:服務器使用自己的私鑰解密客戶端發送的對稱加密密鑰pre_master,雙方都擁有了相同的對稱加密密鑰,之后就可以使用該密鑰進行加密數據傳輸,同時通過消息認證碼來確保數據的完整性。最后的會話密鑰:random_c+random_s+pre_master
一,CA機構的搭建
openssl: ?命令的選項
-x509 ?:生成自簽名證書格式,專用于創建私有CA
-new :生成新證書的簽署請求
-key ?:生成請求時用到的私鑰文件路徑
-out ?:生成后的文件存放路徑,如果是自簽名操作,將直接生成簽署過的證書
-days ?:證書有效期 默認是365天
二,環境部署
1.CA機構 用ycy1.example.com(已經部署好了DNS服務)
1.1 查看CA的默認配置文件 vim /etc/pki/tls/openssl.cnf
證書目錄:
1.2 對比發現默認的CA配置文件和現有的不一致
所以需要創建四個文件:
/etc/pki/CA/index.text
/etc/pki/CA/carert.pem
/etc/pki/CA/serial
/etc/pki/CA/private/cakey.pem
1.3?前提:在DNS服務器上的正向解析數據庫中添加ca.example.com的解析內容
vim /var/named/examp.com
ca IN A 192.168.100.200
1.4在主機CA上為主機CA生成私鑰
(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem)解析:
umask 077 //創建文件時,設置只有所有者具有讀寫權限
openssl genrsa //生成私鑰
-out //設置私鑰的存放路徑
1.5在主機CA上為主機CA生成自簽名證書
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
Country Name(國家):CN
State or Province Name(省份):HB
Locality Name(城市):WH
Organization Name(組織名稱):LQ
Organizational Unit Name(組織單位名稱):LINUX
Common Name(服務器主機名):ca.example.com
Email Address(郵箱):root@example.com
1.5 創建剩下的兩個文件
2.配置WEB服務器
選擇ycy2.example.com 192.168.100.20
2.1 確保DNS關聯ycy1的IP地址192.168.100.10
2.2 獲取私鑰,創建目錄存放
2.3 生成自簽名證書
openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
2.4?在主機WEB上將CA主機上已經數字簽名后的Web證書下載下來
scp httpd.csr root@ca.example.com:/etc/pki/CA/
CA機構可以查看到這個文件(簽名證書文件httpd.csr)
2.5?在主機CA上 對簽署請求進行數字簽名,并指明所生成的Web證書的存放路徑
openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/httpd.crt -days 365##httpd.crt WEB站點證書
2.6在CA機構將根證書復制給客戶端
scp httpd.crt root@ycy2.example.com:/etc/httpd/ssl/
客戶端可以看到
2.7?在主機WEB上安裝apche http擴展模塊mod_ssl 提供安全站點
yum -y install mod_ssl
2.8?在主機WEB上修改主配置文件,使用剛剛下載的web證書
cd /etc/httpd/conf.d/
vim ssl.conf
修改證書目錄和私鑰目錄
2.9 創建安全的站點
vim /etc/httpd/conf.d/httpd-vhost.conf
2.10 在DNS服務器上將cacert.pem 復制到根目錄(客戶端ycy3)
scp root@192.168.100.10:/etc/pki/CA/cacert.pem .
2.11?打開火狐瀏覽器,導入證書
設置–首選項–高級–證書–查看證書–導入–找到根證書,然后雙擊–把“信任使用此CA標識的網站”勾上–確定–確定
2.12 在web創建test文件,并寫入123456
2.13 驗證
三,集成動態WEB
在主機WEB上:
安裝httpd mod_wsgi
yum -y install httpd mod_wsgi
2.上傳動態web內容–Python語言編寫
mkdir /var/www/wsgi
cd /var/www/wsgi //然后將Python編寫的動態web內容上傳到該目錄下
注意,轉移的文件ch可能沒有執行權限,所以需要賦予文件執行權限
chmod +x 【文件名】