在Apache下部署SSL證書實現HTTPS
HTTPS是以安全為目標的HTTP通道,簡單講是HTTP的安全版。谷歌已經制定了一項長遠的計劃,它的最終目標是將所有通過HTTP協議呈現的網頁標為“不安全”,對于站長來說,部署SSL證書來遷移到HTTPS是一個現實和重要的問題,那么,對于Apache系統來說,如何部署SSL證書實現HTTPS協議呢?下面就講述一下具體的實現方法。
安裝好Apache, 并且確認是否安裝ssl模塊,如果沒安裝的話,使用yum install mod_ssl openssl來安裝ssl模塊。
之后,申請并下載SSL證書文件。通常來說有四個文件,分別是:證書文件ca.pem、證書私鑰文件ca.key、證書公鑰文件public.pem、證書鏈文件chain.pem。
( 1 ) 在Apache的安裝目錄下創建cert目錄,并且將下載的全部文件拷貝到cert目錄中。如果申請證書時是自己創建的CSR文件,請將對應的私鑰文件放到cert目錄下并且命名為ca.key;
( 2 ) 打開 apache 安裝目錄下 conf 目錄中的 httpd.conf 文件,找到以下內容并去掉“#”:
#LoadModule ssl_module modules/mod_ssl.so (如果找不到請確認是否編譯過 openssl 插件)
#Include conf/extra/httpd-ssl.conf
( 3 ) 打開 apache 安裝目錄下 conf/extra/httpd-ssl.conf 文件 (也可能是conf.d/ssl.conf,與操作系統及安裝方式有關), 在配置文件中查找以下配置語句:
# 添加 SSL 協議支持協議,去掉不安全的協議
SSLProtocol all -SSLv2 -SSLv3
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 證書公鑰配置
SSLCertificateFile cert/public.pem
# 證書私鑰配置
SSLCertificateKeyFile cert/ca.key
# 證書鏈配置,如果該屬性開頭有 '#'字符,請刪除掉
SSLCertificateChainFile cert/chain.pem
( 4 ) 設置虛擬主機
一如你為 http 在端口 80 上設立 VirtualHost,你亦可為 https 在端口 443 上作樣似的設置。一個在端口 80 上的網站的典型 VirtualHost 有如下樣子
<VirtualHost *:80>
<Directory /var/www/vhosts/yoursite.com/httpdocs>
AllowOverride All
</Directory>
DocumentRoot /var/www/vhosts/yoursite.com/httpdocs
ServerName yoursite.com
</VirtualHost>
要在端口 443 上增加一個姊妹網站,你需要在你的文件頂部加入下列內容
NameVirtualHost *:443
然后再加入一個類似如下的 VirtualHost 記錄:
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
<Directory /var/www/vhosts/yoursite.com/httpsdocs>
AllowOverride All
</Directory>
DocumentRoot /var/www/vhosts/yoursite.com/httpsdocs
ServerName yoursite.com
</VirtualHost>
最后,使用如下指令重新啟動 Apache , 即可實現網站的HTTPS功能。
/etc/init.d/httpd restart