天天看點

Apache中https的詳解及應用案例Apache中https的詳解及應用案例

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

它是由Netscape開發并内置于其浏覽器中,用于對資料進行壓縮和解壓操作,并傳回網絡上傳送回的結果。HTTPS實際上應用了Netscape的安全全套接字層(SSL)作為HTTP應用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通信。)SSL使用40 位關鍵字作為RC4流加密算法,這對于商業資訊的加密是合适的。HTTPS和SSL支援使用X.509數字認證,如果需要的話使用者可以确認發送者是誰。

https的工作原理過程,如圖1所示:

圖1:https的工作原理圖

從上面的工作原理圖可以看出:①用戶端産生的密鑰隻有用戶端和伺服器端能得到。②加密的資料隻有用戶端和伺服器端才能得到明文。③用戶端到服務端的通信是安全的。

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

1、對稱加密算法:

對稱加密的密鑰隻有一個,加密解密為同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES等,如圖2所示:

圖2:對稱加密

2、非對稱加密算法:

非對稱加密的密鑰是成對出現(且根據公鑰無法推知私鑰,根據私鑰也無法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等,如圖3所示:

圖3:非對稱加密

根據上面的兩種加密方法,我們就可以設計一種無法讓他人在網際網路上知道你的通訊資訊的加密方法,步驟如下:

①在伺服器端産生一個公鑰和私鑰。

②用戶端從伺服器取得這個公鑰。

③用戶端産生一個随機的密鑰。

④用戶端通過公鑰對密鑰加密(非對稱加密)

⑤用戶端發送到伺服器端

⑥伺服器端接受這個密鑰并且以後的伺服器端和用戶端的資料全部通過這個密鑰加密(對稱加密)

案例(站點安全維護)

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

(2)案例要求:

現有一個網站站點,要求允許某個網段的人通路,不允許其他人通路,并且通路要通過使用者驗證通路。

(3)實施拓撲圖:

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

圖4:網絡拓撲圖

(4)案例實施:

案例的實施大緻可以歸納為以下四點:

① httpd的安裝和ssl子產品的安裝:

首先檢視本機是否安裝有httpd,如果有可以直接使用,如果沒有則,先挂載CD光牒,然後進入CD光牒的軟體包目錄下查找安裝包,最後進行安裝。

//檢視本機是否安裝httpd

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

//挂載CD光牒

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

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

//進入CD光牒的安裝目錄下

[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行進行修改如下:

編輯完後儲存退出,然後到主站點目錄下編輯一個.htaccess檔案,操作如下:

//進入到主站點目錄下

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

//編輯生成一個.htaccess檔案

[root@huangzhong html]# vim .htaccess

//編輯該檔案的内容如下:

編輯完後儲存退出,又因為在上面編輯時用到了賬号庫,是以接下來建立賬号庫。

//檢視賬号庫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  //顯示出賬号庫所屬的軟體包

//建立賬号,操作如下:

//然後進入/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    //顯示剛才已建立的賬号

③ 編輯來源控制:

打開檔案後輸入:,進入底行模式,在底行模式下輸入set nu     //顯示行号,找到337行往下,然後編輯,編輯内容如下:

④ 利用非對稱加密算法實作加密通路

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

第一步:首先檢視你的本機是否安裝了openssl,如果未安裝進行挂載CD光牒查找安裝。

//檢視本機是否安裝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     //顯示行号,檢視需要配置的内容如下:

從上面的配置檔案中可以看到首先在/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

//從私鑰中提取産生公鑰,操作如下:

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

//産生站點私鑰

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

//生成站點請求檔案

//讓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

編輯完後儲存退出,然後重新開機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端口關閉,然後重新啟動服務,然後通過網頁通路該服務如下:

然後點選安裝此證書,然後就完成了。

(5)測試與驗證:

在測試前在這裡首先建立一個測試網頁,具體操作如下:

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

//編輯建立測試網頁

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

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

在用戶端上通路該網站,結果如下圖:

然後我們在上面輸入使用者名user1,密碼123登入後的結果如下圖:

然後測試來源控制隻允許192.168.2.101通路不允許其他2.0的網段通路該站點測試結果如下:

從上圖可以看到它未通路到測試頁面也就是說是不能通路該站點的。

本文出自 “” 部落格,請務必保留此出處

繼續閱讀