Linux之CA認證
簡介
CA 概述: Certificate Authority 的縮寫,通常翻譯成認證權威或者認證中心,主要用途是為用戶發放數字證書。 CA 認證的流程和公安局派出所頒發身份證的流程一樣
認證中心功能
- 證書發放
- 證書更新
- 證書撤銷
- 證書驗證
CA功能
- 用戶認證
- 數據不可否認性
證書認證過程
- 客戶端向服務端發送請求文件
- 服務端接受客戶端的請求文件確認申請者是否合法
- 服務端使用私鑰將請求文件進行數據加密生成證書文件
- 將生成的證書文件傳遞給客戶端
SSL
簡介
SSL 概述: ( Secure Socket Layer) 安全套接字層,通過一種機制在互聯網上提供密鑰傳輸。其主要目標是保證兩個應用間通信數據的保密性和可靠性, 可在服務器端和用戶端同時支持的一種加密算法。目前主流版本 SSLV2、 SSLV3( 常用)。
SSL傳輸過程
- 客戶端請求一個安全會話協商加密算法
- 服務端向客戶端發送證書
- 客戶端接受服務端的證書確認是否為自己想要訪問的網站
- 確認是客戶端訪問的網站 客戶端會使用CA證書的公鑰解密目標網站的證書 從而得到目標網站的公鑰
- 客戶端使用對稱加密算法生成一把秘鑰 然后使用目標網站的公鑰對秘鑰進行加密 傳遞給目標網站
- 目標網站使用私鑰解密客戶端傳遞的公鑰 從而得到對稱機密的秘鑰 通過該秘鑰進行數據安全傳輸
CA配置
安裝
# 安裝
[root@server ~]# yum -y install openssl
# 修改配置
[root@server ~]# vim /etc/pki/tls/openssl.cnf
basicConstraints=CA:FALSE ---> basicConstraints=CA:TRUE
證書以及私鑰
# 查看幫助
[root@server ~]# /etc/pki/tls/misc/CA -h
usage: /etc/pki/tls/misc/CA -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify
newcert:新證書
newreq:新請求
newreq-nodes:新的請求節點
newca:新的CA證書
sign:簽證
verify:驗證
# 生成CA證書
[root@server ~]# /etc/pki/tls/misc/CA -newca
# 查看公鑰證書
[root@server ~]# cat /etc/pki/CA/cacert.pem
# 查看證書私鑰
[root@server ~]# cat /etc/pki/CA/private/cakey.pem
在Apache搭建https
配置思路
- 生成請求文件發送給服務端
- 服務端接受請求文件使用私鑰加密生成證書文件
- 將證書文件傳遞給客戶端
- 客戶端接受證書文件與http進行結合
私鑰以及請求文件配置
# 安裝http
[root@client ~]# yum -y install httpd
# 生成證書請求私鑰
# 由私鑰推測服務端的公鑰 但是不能由公鑰推測出私鑰
[root@client ~]# openssl genrsa -des3 -out /etc/httpd/conf.d/server.key # 使用des3算法 將私鑰輸出到/etc/httpd/conf.d/server.key
# 查看私鑰
[root@client ~]# cat /etc/httpd/conf.d/server.key
# 使用私鑰生成請求文件
[root@client ~]# openssl req -new -key /etc/httpd/conf.d/server.key -out /server.csr
# 查看請求文件
[root@client ~]# cat /server.csr
# 將證書傳遞給服務端
[root@client ~]# scp /server.csr 10.1.1.1:/
# 服務端進行驗簽
[root@server ~]# openssl ca -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -in /tmp/server.csr -out /server.crt # 使用生成的私鑰以及正式進行驗證簽名
# 將簽名證書傳遞給客戶端
[root@server ~]# scp /server.crt 10.1.1.2:/tmp
Apache聯動SSL
# 安裝ssl模塊
[root@client ~]# yum -y install mod_ssl
# 配置apache加載證書文件
[root@client ~]# cp /server.crt /etc/httpd/conf.d/ # 將證書復制到改目錄下
# 修改配置文件
[root@client ~]# vim /etc/httpd/conf.d/ssl.conf
# 修改證書以及私鑰的路徑
SSLCertificateFile /etc/pki/tls/certs/localhost.crt ---> SSLCertificateFile /etc/httpd/conf.d/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key ---> SSLCertificateKeyFile /etc/httpd/conf.d/server.key
# 重復服務
[root@client ~]# systemctl restart httpd
# 查看服務是否啟動
[root@client ~]# netstat -aunpt | grep httpd
服務測試
[root@client ~]# vim /var/www/html/index.html
Welcome to Apache over SSL

在Nginx搭建https
安裝nginx
# 創建yum源
[root@client ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/7/$basearch/
gpgcheck=0
enabled=1
# 安裝
[root@client ~]# yum -y install nginx
# 啟動
[root@client ~]# systemctl start nginx
修改配置文件
# 備份配置文件
[root@client ~]# cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
# 添加虛擬主機
[root@client ~]# vim /etc/nginx/conf.d/default.conf
server {
listen 443 ssl;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 版本
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; # 加密方式
ssl_certificate /etc/httpd/conf.d/server.crt; #簽名
ssl_certificate_key /etc/httpd/conf.d/server.key; # 私鑰
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m
}
# 檢測主機
[root@client ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# 重啟nginx
[root@client html]# systemctl stop nginx
[root@client html]# nginx
[root@client html]# netstat -aunpt | grep nginx
測試
[root@client html]# echo "Welcome to Nginx over SSL" > /usr/share/nginx/html/index.html
