Apache配置虛擬主機和多HTTPS服務
阿新 • • 發佈:2019-01-01
多個虛擬主機的配置還是教程看上文,最近閒來無事,研究了一下apache的多虛擬主機的同時新增多個https的服務
事實上apache在配置虛擬主機的時候,我們配置httpd-vhosts.conf這個檔案(我已經將註釋去除掉了,如果你的apache版本在2.2.x以上你大可放心的覆蓋,也可以執行,不過你需要修改下hosts檔案)
NameVirtualHost *:80 <VirtualHost abc.com:80> DocumentRoot "D:\abc" ServerName abc.com <Directory "D:\abc> AllowOverride All Order Allow,Deny Allow from all </Directory> </VirtualHost> <VirtualHost xyz.com:80> DocumentRoot "D:\xyz" ServerName xyz.com <Directory "D:\xyz> AllowOverride All Order Allow,Deny Allow from all </Directory> </VirtualHost> <VirtualHost jx.com:80> DocumentRoot "D:\jx" ServerName jx.com <Directory "D:\jx> AllowOverride All Order Allow,Deny Allow from all </Directory> </VirtualHost>
一般的配置也可以可以達到目的了,伺服器上面我們大可不必修改hosts檔案,只需要將ServerName改成你的域名就成,當然你的域名必須做好解析到本臺伺服器上。
好了,虛擬主機的配置過程是十分簡單的,下來再看如何配置多個https服務。
首先請確保你下載的apache是支援openssl的,如果沒有那麼就不要往下看了。(點我下載apache)
我們修改httpd.conf檔案中的ssl設定項搜尋這兩行,請一行一行的搜
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
將前面的“#”號刪除掉。OK儲存
下面我們再來生成證書,這裡的教程我是以windows作業系統來演示的。
1、執行cmd,進入httpd的bin目錄
cd C:\Program Files\Apache Software Foundation\Apache2.2\bin
2、如果你安裝apache有openssl的話 那麼在這個bin目錄下會有一個openssl.exe的檔案,我們來生成證書
set openssl_conf=./openssl.cnf openssl genrsa 4096 -des3 > server.key openssl req -new -key server.key > server.csr
在第二步需要設定相關引數,下面我列出來
Country Name (2 letter code) [AU]:CN #國家程式碼 建議CN
State or Province Name (full name) [Some-State]:GUANGXI #所在省份
Locality Name (eg, city) []:NANNING #城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:YOURCOMP #你的公司名
Organizational Unit Name (eg, section) []:HELLO #組織或機構
Common Name (e.g. server FQDN or YOUR name) []:abc.com #申請證書的域名 重要
Email Address []:[email protected] #管理員郵箱
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456 #交換金鑰
An optional company name []:abc.com #和你申請的域名一致就行了
再生成證書
#生成證書的有效期
openssl req -x509 -days 365 -key server.key -in server.csr > server.crt
你再看bin目錄下面是不是有這三個檔案了
如果有了,OK我們的證書生成完畢。現在就開始配置https了,進入conf/extra資料夾中,找到一個httpd-ssl.conf的檔案用文字工具開啟它
Listen 443
#需要加上這段虛擬主機
NameVirtualHost *:443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLPassPhraseDialog builtin
#請注意修改你的apache安裝路徑對應的log
SSLSessionCache "shmcb:C:/Program Files/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
SSLMutex default
#去除原來的*:443
<VirtualHost xyz.com:443>
DocumentRoot "d:/xyz_ssl"
ServerName xyz.com:443
SSLEngine on
#最關鍵就是這裡,我們上面生成的證書在這裡就用到了,注意路徑是否能夠找到你的證書
#我這裡有兩個https所以為了方便你會看到這裡是另外一個證書 xyz.com的證書
SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/xyz_cret/server.crt"
SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/xyz_cret/server.key"
<Directory "d:/xyz_ssl">
Options -Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost abc.com:443>
DocumentRoot "d:/abc_ssl"
ServerName abc.com:443
SSLEngine on
#我這裡有兩個https所以為了方便你會看到這裡是另外一個證書 abc.com的證書
SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/abc_cret/server.crt"
SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/abc_cret/server.key"
<Directory "d:/abc_ssl">
Options -Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
我已經把註釋都刪掉了,如果不出什麼意外的話,將你的證書路徑找對就可以執行,請注意上面的中文註釋!!!
好了,重啟apache服務,我們來看下效果。
OK,