1. 程式人生 > >基於httpd建立私有CA實現https加密連接

基於httpd建立私有CA實現https加密連接

ca https openssl

有關於https是什麽,點擊連接查看百度百科:https://baike.baidu.com/item/https/285356?fr=aladdin

一、準備工作

在開始實驗之前,我們要準備至少兩臺主機還有自身的計算機,一臺作為服務器,另外一臺作為私有CA機構,我們要保證這兩臺主機之間可以互相ping通,並且都能於真實計算機ping通,也就是這三臺機器能夠互相通信。

在這裏,我準備了兩臺虛擬機,操作系統分別為CentOS 7 和 CentOS 6 ,CentOS 7 使用的IP地址為172.16.7.100,CentOS 6 使用的IP地址為172.16.128.4。我將CentOS 7 作為提供http服務的服務器,CentOS 6 作為CA機構,三臺機器的功能如圖:

技術分享

二、建立CA

首先在IP為172.16.128.4的主機上建立CA,並將自己的信息寫到認證中去:

~]# cd /etc/pki/                                                            #切換工作目錄
CA]# touch index.txt                                #然後再當前目錄下創建兩個文件
CA]# echo 01 > serial                               #在認證時會用到,如果不創建會報錯
CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)                     #創建私鑰
CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300   #認證自己

技術分享

三、創建申請

CA建立完了,我們就要開始建立自身的認證了,首先回到當作服務器的主機(172.16.7.100),找到一個目錄來存儲認證文件,在這裏我將“/myweb/wordpress/ssl”作為存放目錄(隨便放,後面使用絕對路徑引用,放在一個安全的地方),然後使用下面的命令創建私鑰:

ssl]# (umask 077;openssl genrsa -out httpd.key 1024)
ssl]# openssl req -new -key httpd.key -out httpd.csr

在填寫信息的時候註意:國家要求兩個字符,服務器填寫虛擬主機的域名

技術分享

四、申請及審批

認證文件都創立完成之後,就可以把服務器上生成的申請信息發送到CA上進行認證,使用下面這條命令可以方便的將文件上傳:

ssl]# scp httpd.csr [email protected]:/tmp/          #此命令在172.16.7.100(服務器上執行)

在一段時間等待之後,就會提示要輸入密碼,在輸入密碼之後再等待一段時間,出現如圖所示畫面就說明文件上傳成功:

技術分享

切換到CA(172.16.128.4)上執行下面的命令完成認證(根據提示選擇yes即可):

CA]# openssl ca -in /tmp/httpd.csr -out certs/myweb.wordpress.com.crt -days 365

在認證完成之後,在通過scp命令將認證完成生成的文件傳送回去:

CA]# scp certs/myweb.wordpress.com.crt 172.16.7.100:/myweb/wordpress/ssl/

回到服務器(172.16.7.100)上,即可在“/myweb/wordpress/ssl”裏邊看到myweb.wordpress.com.crt文件,到這裏私有CA和證書頒發就完成了。

五、瀏覽器查看

證書頒發完成,但是我們還是不能在瀏覽器中看到,如果想要在瀏覽器裏使用https,需要“mod_ssl”,使用下面的命令來安裝:

~]# yum install -y mod_ssl

在安裝完成之後,就會在“/etc/httpd/conf.d/”下生成一個配置文件:ssl.conf,編輯這個文件:

~]# vim /etc/httpd/conf.d/ssl.conf

將文件中下面兩個選項(一般分別在101行和108行)改成下面這樣(這兩個文件放在哪就改成哪):

SSLCertificateFile /myweb/wordpress/ssl/myweb.wordpress.com.crt
SSLCertificateKeyFile /myweb/wordpress/ssl/httpd.key

改完之後保存退出,重新加載httpd配置:

~]# systemctl restart httpd

使用命令“ss -tnl”查看,可以看到443端口已經被監聽了,這個端口就是默認的https端口:

技術分享

到此https就配置完成,下面進行測試,在“/etc/httpd/conf.d/”中創建一個虛擬主機:

ssl]# vim /etc/httpd/conf.d/vhost.conf

寫入以下內容:

<VirtualHost *:443>
        ServerName myweb.wordpress.com
        DocumentRoot /myweb/wordpress
        ErrorLog logs/wordpress-error_log
        CustomLog logs/wordpress-access_log combiend
        DirectoryIndex index.html
        <Directory "/myweb/wordpress">
                Options Indexes
                AllowOverride   None
                Require all granted
        </Directory>
</VirtualHost>

然後創建目錄“/myweb/wordpress”,並創建一個主頁:

~]# mkdir /myweb/wordpress
~]# echo "wordpress Page" > /myweb/wordpress/index.html

最後在真實計算機上使用瀏覽器打開“https://myweb.wordpress.com/”即可看到如下畫面(要修改hosts文件,參考前面的博客):

技術分享

可以看到都是剛才註冊的信息,報錯是因為這個CA為私有,無法經過它的驗證。但是在局域網內就可以使用這個證書來驗證信息來源的可靠性了。






基於httpd建立私有CA實現https加密連接