環境:centos-6.4-x86_64
html
軟件:httpd-2.2.15-26.el6.centos.x86_6linux
Web服務器的實現,在windows下有iis,在linux/unix有apache和nginx。咱們這裏先來說解一下apache也就是httpd來實現web服務。nginx
再來介紹一下httpd和nginx的區別。httpd穩定性高,可是併發數少。而nginx的併發數多可是穩定性比較差。httpd在運行時會產生一個父進程,而後由父進程派發子進程,佔用資源比較多。nginx運行是靠線程,佔用資源少。web
安裝httpd,而後經過rpm –ql查看httpd的目錄結構。apache
看圖中有一個/etc/logrotate.d/httpd這是日誌分割,避免日誌太大致使服務不能運行。windows
接下來看一下httpd的配置文件,配置文件放在/etc/httpd/conf/httpd.confcentos
能夠看到httpd的配置文件主要分爲三個部分,第一部分主要是全局環境配置,通常不須要修改,第二部分是主要是默認的參數,第三部分是虛擬主機的。瀏覽器
接着往下在95行看到一個是關於模式的安全
Httpd的工做模式有兩種,一種是prefork,另外一種是worker。這兩個的區別就是perfork模式是產生進程,而worker模式是線程。服務器
再往下看在292行看到網站的根目錄是/var/www/html
配置文件就先看到這裏,接下來啓動httpd
看到有一個小的錯誤,這個錯誤是指沒有配置名字,默認使用127.0.0.1,這個並不影響服務器的運行,能夠不用管。
接下來,咱們在網站根目錄下建立一個網頁,可能不能訪問。
而後經過瀏覽器來訪問,看能不能成功
能夠看到成功訪問。
接着就來探討一下站點的安全。
實現站點的安全有三種方式:
一、身份驗證
二、來源控制
三、加密訪問,也就是經過https協議來進行訪問
對於第一種和第二種安全主要是在網站目錄安全性來實現的。
實現方法在httpd的主配置文檔中編寫
<directory 站點目錄>
驗證方法
</directory>
這個比較簡單這裏就不詳細介紹了,重點來說解一下訪問加密也是https的實現。
要實現https就要用到數字證書,數字證書要有頒發機構CA,咱們就在本機上安裝openssl來實現CA
首先安裝openssl,接着編輯/etc/pki/tls/openssl.conf,主要修改一些默認值
修改匹配的規則,否則將沒法給網站簽發證書
就先修改這麼多
而後建立index.txt和serial,而且給serial一個初值
CA也要本身的公鑰,私鑰和證書
使用openssl genrsa 1024 >private/cakey.pem 產生CA私鑰
因爲要保證私鑰的安全性因此要修改權限
使用openssl req -new -key private/cakey.pem -x509 -out cacert.pem 產生證書
接下來就要配置網站的私鑰 請求文件 和利用CA簽發證書
切換到/etc/httpd目錄下建立一個文件夾存放文件使用命令mkdir certs,而後切換到該目錄中
產生私鑰:openssl genrsa 1024 >httpd.key 而後修改權限爲600
產生請求文件:openssl req -new -key httpd.key -out httpd.crq
而後簽發證書:
openssl ca -in httpd.crq -out httpd.cert
而後根據提示輸入y
咱們在/etc/pki/CA目錄下查看index.txt就能夠看到一行記錄
接着就要捆綁證書,綁定證書須要調用mod_ssl模塊,首先要安裝模塊。裝好以後編輯/etc/httpd/conf.d/ssl.conf
在文件的105行指出證書的位置,在112行指出key的位置。
在121行指出頒發機構的證書所在位置
而後重啓httpd,而後測試。
訪問的時候會說證書有問題,
這沒有關係,咱們先安裝CA的證書。選擇查看證書,證書路徑
而後選擇rootca.net這個證書,而後查看證書
而後安裝證書
最後咱們能夠在受信任的根證書頒發機構中看到,對於證書名不一致是由於咱們頒發給了www.abc.com,而訪問的是192.168.29.20,因此問出現不一致,在這裏就再也不搭建dns服務器了,直接在本地hosts文件中指明就好了,文件所在地方C:\WINDOWS\system32\drivers\etc
而後測試
訪問www.abc.com能夠訪問到。