Apache中https的詳解及應用案例

Apachehttps的詳解及應用案例

1、https的簡介

它是一個安全通訊通道,它基於HTTP開發,用於在客戶計算機和服務器之間交換信息。它使用安全套接字層(SSL)進行信息交換,簡單來講它是HTTP的安全版。html

它是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操做,並返回網絡上傳送回的結果。HTTPS實際上應用了Netscape的安全全套接字層(SSL)做爲HTTP應用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通訊。)SSL使用40 位關鍵字做爲RC4流加密算法,這對於商業信息的加密是合適的。HTTPS和SSL支持使用X.509數字認證,若是須要的話用戶能夠確認發送者是誰。web

2、https中的工做原理

https的工做原理過程,如圖1所示:wKioL1Nzq9yhRZZrAAF5lKF1m5I197.jpg1https的工做原理圖算法

從上面的工做原理圖能夠看出:客戶端產生的密鑰只有客戶端和服務器端能獲得加密的數據只有客戶端和服務器端才能獲得明文客戶端到服務端的通訊是安全的vim

3、https中的兩種加密算法

https的兩種基本加密算法是:對稱加密算法,非對稱加密算法(公私鑰加密),下面介紹這兩種加密算法的特色:centos


一、對稱加密算法:瀏覽器

對稱加密的密鑰只有一個,加密解密爲同一個密碼,且加解密速度快,典型的對稱加密算法有DESAES等,如圖2所示安全

wKiom1NzrBbiIOssAABbqyjtcHs878.jpg

2:對稱加密服務器

二、非對稱加密算法:網絡


非對稱加密的密鑰成對出現(且根據公鑰沒法推知私鑰,根據私鑰也沒法推知公鑰),加密解密使用不一樣密鑰(公鑰加密須要私鑰解密,私鑰加密須要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSADSA等,如圖3所示tcp

wKioL1NzrADDU3LhAADNatexzk0218.jpg

3:非對稱加密

根據上面的兩種加密方法,咱們就能夠設計一種沒法讓他人在互聯網上知道你的通信信息的加密方法,步驟以下:

在服務器端產生一個公鑰私鑰

客戶端從服務器取得這個公鑰

客戶端產生一個隨機的密鑰

客戶端經過公鑰對密鑰加密(非對稱加密)

客戶端發送到服務器端

服務器端接受這個密鑰而且之後的服務器端和客戶端的數據所有經過這個密鑰加密(對稱加密)

4、https的應用案例

案例(站點安全維護)

(1)實施環境:Centos 64爲,PC機

(2)案例要求:

現有一個網站站點,要求容許某個網段的人訪問,不容許其餘人訪問,而且訪問要經過用戶驗證訪問。

(3)實施拓撲圖:

根據實施的要求使用繪圖工具繪製出網絡拓撲圖,如圖4所示:

wKiom1NzrDqzBZdrAAD9S8ZI8f8033.jpg

4:網絡拓撲圖

4)案例實施:

案例的實施大體能夠概括爲如下四點:

 httpd的安裝和ssl模塊的安裝:

首先查看本機是否安裝有httpd,若是有能夠直接使用,若是沒有則,先掛載光盤,而後進入光盤的軟件包目錄下查找安裝包,最後進行安裝。

//查看本機是否安裝httpd

[root@huangzhong ~]# rpm -qa httpd //若果安裝則下面會顯示安裝包,不然沒有

//掛載光盤

[root@huangzhong ~]# mount /dev/cdrom /media/cdrom

mount: block device /dev/sr0 is write-protected, mounting read-only //顯示光盤已掛載上

//進入光盤的安裝目錄下

[root@huangzhong ~]# cd /media/cdrom/Packages/

//查找有關httpd的安裝包

[root@huangzhong Packages]# ll |grep httpd

-r--r--r--. 2 root root 840792 Feb 24 2013 httpd-2.2.15-26.el6.centos.x86_64.rpm //httpd的安裝包

-r--r--r--. 2 root root 74100 Feb 24 2013 httpd-tools-2.2.15-26.el6.centos.x86_64.rpm //httpd工具安裝包

//使用yum工具把這兩個安裝包安裝上

[root@huangzhong Packages]# yum install httpd-2.2.15-26.el6.centos.x86_64.rpm httpd-tools-2.2.15-26.el6.centos.x86_64.rpm

//httpd的相關軟件包安裝完後,而後查找ssl模塊,

[root@huangzhong Packages]# ll |grep ssl

-r--r--r--. 2 root root 92248 Feb 24 2013 mod_ssl-2.2.15-26.el6.centos.x86_64.rpm //這個就是要安裝ssl模塊

//安裝ssl模塊

[root@huangzhong Packages]# yum install mod_ssl-2.2.15-26.el6.centos.x86_64.rpm 

//安裝完後啓動httpd服務

[root@huangzhong ~]# service httpd start

Starting httpd: [ OK ] //代表服務已啓動

//永久開啓httpd服務

[root@huangzhong ~]# chkconfig httpd on

//查看端口號

[root@huangzhong ~]# netstat -tupln |grep 80

tcp 0 0 :::80 :::* LISTEN 2469/httpd //代表httpd端口已開啓


 編輯身份驗證:

httpd安裝完後會產生一些配置文件,在這裏首先找到配置文件所在的目錄,而後編輯配置文件。

//進入/etc/httpd目錄下

[root@huangzhong ~]# cd /etc/httpd

//查看該目錄下的配置文件,能夠看到兩個存放置文件的目錄

[root@huangzhong httpd]# ll

drwxr-xr-x. 2 root root 4096 May 14 14:47 conf //httpd的配置文件的存放位置。

drwxr-xr-x. 2 root root 4096 May 14 14:47 conf.d //額外的功能模塊的配置文件存放位置

//打開配置文件存放位置conf目錄下的httpd.conf配置文件

[root@huangzhong httpd]# vim conf/httpd.conf

//編輯該配置文件

打開文件後輸入:進入底行模式,在底行模式下輸入set nu //顯示行號,而後找到338行進行修改以下:

wKioL1NzrCPRK7YZAAVkd2_LOmY835.jpg

編輯完後保存退出,而後到主站點目錄下編輯一個.htaccess文件,操做以下:

//進入到主站點目錄下

[root@huangzhong httpd]# cd /var/www/html/

//編輯生成一個.htaccess文件

[root@huangzhong html]# vim .htaccess

//編輯該文件的內容以下:

wKiom1NzrF_Q9gjsAAFO4gKcO0M849.jpg

編輯完後保存退出,又由於在上面編輯時用到了帳號庫,所以接下來建立帳號庫。

//查看帳號庫htpasswd所在的位置

[root@huangzhong html]# which htpasswd

/usr/bin/htpasswd //顯示出了帳號所在的位置

//查看帳號庫所屬的軟件包

[root@huangzhong html]# rpm -qf `which htpasswd`

httpd-tools-2.2.15-26.el6.centos.x86_64 //顯示出帳號庫所屬的軟件包

//建立帳號,操做以下:

wKioL1NzrEHg0IQZAAH3lwSBN78580.jpg

//而後進入/var/www目錄下看是否有.htpasswd

[root@huangzhong www]# ll -a // 加-a表示看全部文件包括隱藏文件

-rw-r--r--. 1 root root 40 May 14 15:39 .htpasswd //表示已生成帳號庫文件

//查看帳號庫文件的內容

[root@huangzhong www]# cat .htpasswd 

user1:cKnI1SE/VKRjs

user2:w7nEdaxrZf94A //顯示剛纔已建立的帳號


 編輯來源控制:

//打開配置文件存放位置conf目錄下的httpd.conf配置文件

[root@huangzhong httpd]# vim conf/httpd.conf

//編輯該配置文件

打開文件後輸入:進入底行模式,在底行模式下輸入set nu //顯示行號,找到337行往下,而後編輯,編輯內容以下:

wKiom1NzrHnSSTKoAAH-VloZhqs146.jpg


 利用非對稱加密算法實現加密訪問

加密包括非對稱加密和對稱加密,在上面的加密算法中已提到了二者加密算法的特色,我在這講的是利用非對稱加密算法實現的加密算法,非對稱加密算法包括CA的實現和站點證書的生成,具體實現以下操做:

第一步:首先查看你的本機是否安裝了openssl,若是未安裝進行掛載光盤查找安裝。

//查看本機是否安裝openssl

[root@huangzhong ~]# rpm -qa |grep openssl

openssl-1.0.0-27.el6.x86_64 //從這裏能夠看到已經安裝過了,那麼就不需安裝直接用。

第二步:編輯配置文件,操做以下:

//進入配置文件所在的目錄下

[root@huangzhong ~]# cd /etc/pki/tls

//查看有沒有要找的配置文件

[root@huangzhong tls]# ll

-rw-r--r--. 1 root root 10906 Oct 12 2012 openssl.cnf //能夠看到這個就是咱們要找的配置文件

//打開配置文件

[root@huangzhong tls]# vim openssl.cnf

//查看該配置文件內容以下:

打開文件後輸入:進入底行模式,在底行模式下輸入set nu //顯示行號,查看須要配置的內容以下:

wKiom1NzrIeBPecEAAUj6B5McNc629.jpg

從上面的配置文件中能夠看到首先在/etc/pki/CA目錄下建立兩個文件index.txt和serial,而後再產生私鑰和公鑰。

//建立index.txt文件

[root@huangzhong CA]# touch index.txt

//建立serial文件

[root@huangzhong CA]# touch serial 

//先產生私鑰

[root@huangzhong CA]# openssl genrsa 1024 >private/cakey.pem

//查看該私鑰文件

[root@huangzhong CA]# ll private/cakey.pem 

-rw-r--r--. 1 root root 891 May 14 21:37 private/cakey.pem

//查看該私鑰的內容

[root@huangzhong CA]# cat private/cakey.pem 

//從查看私鑰文件能夠看出是不安全的,在這裏要修改權限

[root@huangzhong CA]# chmod 600 private/cakey.pem 

//從私鑰中提取產生公鑰,操做以下:

wKioL1NzrGnCdGySAARfvh-E4Sk708.jpg

編輯完後公鑰就產生了導出CA就實現了,接下來就是站點證書以及私鑰的產生,操做以下:

//產生站點私鑰

[root@huangzhong certs]# openssl genrsa 1024 >httpd.key

//生成站點請求文件

wKioL1NzrH7jw7lwAAQ6XKi2KQ4115.jpg

//讓CA進行辦法證書

[root@huangzhong certs]# openssl ca -in httpd.req -out httpd.cert

//查看生成的數據

[root@huangzhong CA]# cat index.txt

V150514150433Z00unknown/C=CN/ST=henan/O=12

//把證書與web進行編輯訪問,編輯下列文件以下:

[root@huangzhong CA]# vim /etc/httpd/conf.d/ssl.conf

wKiom1NzrNPyPU59AANblCPOS2o917.jpg

編輯完後保存退出,而後重啓httpd服務,並查看端口。

//從新啓動httpd服務

[root@huangzhong CA]# service httpd restart

Stopping httpd: [ OK ]

Starting httpd: [ OK ]

//查看端口

[root@huangzhong CA]# netstat -tupln |grep httpd

tcp 0 0 :::80 :::* LISTEN 2799/httpd 

tcp 0 0 :::443 :::* LISTEN 2799/httpd //從端口能夠看出已經開啓

由於咱們這裏使用的是https因此關閉80端口,操做以下:

//打開配置文件

[root@huangzhong ~]# cd /etc/httpd/conf

打開後而後找到136行把80端口關閉,而後從新啓動服務,而後經過網頁訪問該服務以下:

wKioL1NzrLizNEoJAAQs4TOeJDo259.jpg

而後點擊安裝此證書,而後就完成了。


5)測試與驗證:

在測試前在這裏首先建立一個測試網頁,具體操做以下:

//進入/var/www/html目錄下

[root@huangzhong httpd]# cd /var/www/html/

//編輯建立測試網頁

[root@huangzhong html]# echo "hello,my name is huangzhong" >index.html

編輯完建立測試網頁後,而後進行測時以下:

在客戶端上訪問該網站,結果以下圖:

wKiom1NzrPHyi2gCAAKJDkXoEvo672.jpg

而後咱們在上面輸入用戶名user1,密碼123登陸後的結果以下圖:

wKioL1NzrNKj1DWLAAE3J9FYRuQ737.jpg

而後測試來源控制只容許192.168.2.101訪問不容許其餘2.0的網段訪問該站點測試結果以下:

wKiom1NzrQrAHhdbAAMM4BhLB5o403.jpg

從上圖能夠看到它未訪問到測試頁面也就是說是不能訪問該站點的。


本文出自 「快樂一輩子」 博客,請務必保留此出處http://tyjhz.blog.51cto.com/8756882/1411367

相關文章
相關標籤/搜索