web 服務進階 httpd配置成https

web服務進階 自建CA/https詳解

一、SSL與https

1、引言

我們網上購物、網上訂票,以及使用支付寶支付過程中都會在網上直接輸入賬號和密碼。這些信息都是非常重要的,如何才能在輸入的過程中,不被別人看見和竊取,就需要對你輸入的信息進行加密處理。

早期的兩主機通信之間是沒有加解密程序,后來就在傳輸層與應用層之間加了一個SSL庫,完成加密解密功能。

web 服務進階  httpd配置成https

2、身份認證是怎么實現的?

A主機給B主機發了一個很重要的文件,B主機是怎么知道這個文件是A發的呢,萬一是不法分子小C的陰謀,那我該不該相信這個信息呢?所以采用下面一種策略

首先發送方用自己的私鑰加密數據特征碼,接收方用對方的公鑰去解密,如果接的開,就說明是對方發送的,密鑰是成對出現的,私鑰只有發送方自己有。其中發送方用自己的私鑰加密數據的結果就叫數據簽名。就相當于蓋個章,這個東西是我的了。

3、加密過程:A發送給B信息

(1)A生成一組數據,為了保證數據安全保密的送給B,A先用單向加密算法計算出這段數據的特征碼

(2)A會用自己的私鑰加密這段特征碼并將結果覆加在數據后面。

(3)A生成了一個臨時的對稱密鑰,并使用這個對稱密鑰加密這整段數據。

(4)S會獲取到B的公鑰,并使用對方的公鑰加密剛才那個對稱密鑰并覆加到整個后面,然后發送到B進行解密。

4、解密過程:B來解密

(1)B拿到報文以后,先用自己的私鑰去解密這段加密的對稱私鑰

(2)用對稱密鑰解密整段加密的內容

(3)用A的公鑰去解密特征碼,能解密,A的身份得到驗證

(4)在用同樣的加密對稱算法,去計算這段數據的特征碼并與解密出來的進行比較,如果相同,數據完整性得到驗證。

5、這中間缺一個環節,就是CA,幫助通信雙方確認對方身份是否真偽。雙方通信時要商量好:

(1)把CA頒發的公鑰證書給我

(2)商議好用哪種方式加密

(3)B拿到A的公鑰后要驗證

6、ssl與http的關系

http本身不具備加密解密功能,所以通過ssl進行加密。使用ssl的http通信叫做https通信。

web 服務進階  httpd配置成https


二、實例演示

1、自建CA(A主機:ip為192.168.1.118)

(1)生成私鑰文件 mkdir -p /etc/pki/CA/private #創建私鑰保存的目錄

(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

ll /etc/pki/CA/private/ # 私鑰只能自己保存,對保密性要求高

web 服務進階  httpd配置成https

(2)生成自簽證書

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out cacert.pem -days 7300

web 服務進階  httpd配置成https

(3)為CA提供所需的目錄和文件

touch /etc/pki/CA/index.txt # 創建數據庫文件

echo 01 > /etc/pki/CA/serial # 創建序列號文件并給明第一個證書的序列號碼

ll /etc/pki/CA

web 服務進階  httpd配置成https

至此,私有CA創建完畢。

2、證書申請:(在B主機上:ip:192.168.1.109)

(1)在證書申請的主機上生成私鑰

cd /etc/httpd/

mkdir ssl #創建保存私鑰的目錄

cd ssl

(umask 077;openssl genrsa -out httpd.key 2048) #生成私鑰

ll

web 服務進階  httpd配置成https

(2)生成證書簽署請求

openssl req -new -key httpd.key -out httpd.csr -days 365 # 在本地生成

web 服務進階  httpd配置成https

(3)把請求發送給CA

scp httpd.csr root@192.168.1.118:/etc/pki/CA # 192.168.1.118為CA主機

web 服務進階  httpd配置成https

(4)CA簽發證書(在CA192.168.1.118主機上操作),cd到 /tmp下

openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

web 服務進階  httpd配置成https

cat /etc/pki/CA/index.txt #查看第一個簽發的證書

web 服務進階  httpd配置成https

(5)把簽署好的證書發還給請求者

cd /etc/pki/CA

scp certs/httpd.crt root@192.168.1.109:/etc/httpd/ssl/

web 服務進階  httpd配置成https

在請求主機上查看,證書已經頒發好了

web 服務進階  httpd配置成https

3、配置httpd支持使用ssl,及使用的證書;

(1) yum install -y mod_ssl

(2)修改配置文件: vim /etc/httpd/conf.d/ssl.conf

<VirtualHost 192.168.1.109:443>
        ServerName www.a.com
        DocumentRoot /www/a.com/htdocs
        SSLengine ON
        SSLprotocol ALL -sslv2 -sslv3
        SSLcertificatefile /etc/httpd/ssl/httpd.crt
        SSLcertificatekeyfile /etc/httpd/ssl/httpd.key
</VirtualHost>

(3)配置虛擬主機vim /etc/httpd/conf.d/virt.conf

<VirtualHost 192.168.1.109:80>
              ServerName www.a.com
              DocumentRoot /www/a.com/htdocs
              <Directory "/www/a.com/htdocs">
                      Options None
                      AllowOverride None
                      Require all granted
</Directory>

檢查

web 服務進階  httpd配置成https

測試如下:

web 服務進階  httpd配置成https

ok了,還要把CA證書下載到windows導入瀏覽器。就可以了。

原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/63170

(0)
N24_yeziN24_yezi
上一篇 2016-12-10 20:03
下一篇 2016-12-11 10:03

相關推薦

  • 設計模式 ( 十五 ) 中介者模式Mediator(對象行為型)

    1.概述 在面向對象的軟件設計與開發過程中,根據“單一職責原則”,我們應該盡量將對象細化,使其只負責或呈現單一的職責,即將行為分布到各個對象中。 對于一個模塊或者系統,可能由很多對象構成,而且這些對象之間可能存在相互的引用,在最壞的情況下,每一個對象都知道其他所有的對象,這無疑復雜化了對象之間的聯系。雖然將一個系統分割成許多對象通??梢栽鰪娍蓮陀眯裕菍ο蟆?/p>

    Linux干貨 2015-07-20
  • “Apache” 服務器中的戰斗機

    一,apache世界使用排名第一的web服務器軟件。它被音譯為阿帕奇,與武裝直升機里的佼佼者阿帕奇同名,它雖沒有阿帕奇那么霸氣的外觀,但是它具有和它一樣的強大火力,它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中…

    2017-08-19
  • 測試

    3、查詢file.txt以abc結尾的行grep "abc$" file.txt4、刪除file.txt文件中的空行grep -v '^$' file.txt > file.txtsed '/^$/d' file.txt > file.txt(覆蓋重定向文件變為空該文件為空,但是追加時正常成功。…

    Linux干貨 2016-06-12
  • 計算機的組成、Linux主流三大版本的區別、Linux的哲學思想、Linux的使用格式及命令的使用簡略說明,以及如何查看命令幫助、FHS目錄機構

    計算機的組成極其功能? 按功能來說計算機是由運算器、控制器、I/O系統(輸入、輸出系統)、存儲器五部分組成。 運算器:即中央處理器(CPU)作為五大部分中心的主腦,對數據進行邏輯運算或算數運算。 控制器:主要是指內存設備,將讀取到的數據臨時保存在內存中這個過程被成為尋址。在cpu中也有屬于自己的控制器稱之為CPU的寄存器來進行多指令的行。 I/O系統:輸入系…

    2017-12-03
  • raid5 陣列

    1 fdisk 分區sdb2,sdd1,sde1, 2  新建raid5 [root@localhost ~]# mdadm -C /dev/md5 -a yes  -l 5  -n 3 -x 1 /dev/sdd1 /dev/sde1  /dev/sdf  /dev/sdb2  3   …

    Linux干貨 2017-04-25
  • 千萬不要把 bool 設計成函數參數

    我們有很多Coding Style 或 代碼規范。但這一條可能會經常被我們所遺忘,就是我們經常會在函數的參數里使用bool參數,這會大大地降低代碼的可讀性。不信?我們先來看看下面的代碼。 當你讀到下面的代碼,你會覺得這個代碼是什么意思? widget->repaint(false); 是不要repaint嗎?還是別的什么意思?看了文檔后,我們才知道這個…

    Linux干貨 2016-07-10

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-12-14 14:21

    博客完成的非常好,有圖有真現,有實驗結果。加油!

欧美性久久久久