Windows下搭建HTTP/HTTPS服務器及測試過程。
1 安裝Apache
http://www.apachehaus.com/cgi-bin/download.plx
選擇合適的版本下載
本次下載的是 Apache 2.4.x VC14
Apache版本號:httpd-2.4.25-x64
OpenSSL版本號:OpenSSL 1.0.2j
解壓后按照readme_first.html文檔中步驟進行測試和安裝:
1)將解壓后的Apache24文件夾復制到C:\
2)在命令行輸入
cd C:\Apache24\bin
3)測試Apache安裝條件是否滿足
在命令行輸入
httpd.exe
若無錯誤,在IE瀏覽器地址欄輸入http://localhost,若能正常打開網頁說明Apache能正常安裝;若報錯,根據錯誤提示排除錯誤,直到可以正常運行httpd.exe并能訪問http://localhost
4)開始安裝
在命令行輸入
httpd -k install
完成安裝后沒有圖形操作界面,Apache所有操作都在命令行進入 C:\Apache24\bin目錄后用命令完成的,詳見后文。
2 Apache常用操作命令
安裝Apache24后沒有圖形界面,需要在命令行操作,首先進入Apache bin目錄
cd C:\Apache24\bin
常用命令:
httpd -k install /* 安裝Apache
/
httpd -k uninstall /
卸載Apache
/
httpd -k start /
啟動Apache
/
httpd -k stop /
停止Apache
/
httpd -k retart /
重啟Apache */
3 制作CA證書、Server證書和Client證書
3.1 準備工作
在C:\Apache24\bin目錄下創建demoCA目錄,并在該目錄下創建如下幾個文件和文件夾
index.txt
newcerts\
serial
注:
serial文件沒有文件后綴
用文本編輯器打開serial,并寫入'01'(實際操作時不要加引號)
打開命令行,進入C:\Apache22\bin
cd C:\Apache22\bin
3.2 生成CA證書
1)生成CA私鑰
openssl genrsa -out ca.key 2048
命令描述:
該命令會在當前目錄下生成一個私鑰文件ca.key
參數說明:
gensa:生成rsa密鑰
-out:指定輸出的文件名
2048:密鑰長度
2)生成CA證書
openssl req -new -x509 -days 5000 -key ca.key -out ca.crt
命令描述:
該命令會在當前目錄下生成一個自簽名的CA證書文件ca.crt
參數說明:
req:請求操作
-new:生成新的文件
-x509:證書文件的格式
-days:證書有效期
-key:指定私鑰文件
-out:指定輸出文件
注:
由于CA文件是用來給其他證書簽名文件簽名以生成對應的證書文件的,不需要其他文件給CA證書簽名,因此生成的CA證書是自簽名的。
3.3 生成Server端證書
1)生成Server證書私鑰
openssl genrsa -out server.key 2048
2)生成Server證書請求文件
openssl req -new -key server.key -out server.csr
命令描述:
該命令會在當前目錄下生成一個證書請求文件server.csr,用CA證書給證書請求文件簽名后即可生成證書文件。
參數說明:
req:請求操作
-new:生成新的文件
-key:指定私鑰文件
-out:指定輸出文件
運行該命令時,命令行會提示輸入CountryName(填CN),ProvinceName和CommonName等。CommonName(公用名)是個很重要的參數,如果要在外網訪問HTTP/HTTPS服務器,CommonName必須填服務器的域名或者公網IP;如果只在內網做測試,CommonName可以填服務器主機的內網IP。
注:
由于Server的證書請求文件需要被CA證書文件簽名后才能生成證書文件,不能使用自簽名,因此不使用-x509選項
3)生成Server證書
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
命令描述:
該命令使用CA證書對證書請求文件簽名,以生成證書文件
參數說明:
ca:表示是對證書請求文件進行簽名
-in:指定輸入的證書請求文件
-out:指定輸出文件
-cert:指定CA證書文件
-keyfile:指定CA私鑰文件
4)驗證Server證書
openssl verify -CAfile ca.crt server.crt
命令描述:
該命令用于驗證生成的證書文件是否正確,若正確則輸出OK,若錯誤則輸出ERROR。
命令說明:
verify:表示是對證書文件進行認證
-CAfile:指定CA證書文件
3.4 生成Client端證書
1)生成Client私鑰
openssl genrsa -out client.key 2048
2)生成Client證書請求文件
openssl req -new -key client.key -out client.csr
注意:
生成Client端證書請求文件時,ON(Organization Name)必須與生成服務器時使用的ON一樣,并且OU(Organizational Unit Name)和CN(Common Name)不能與生成Server端證書請求文件時使用的OU和CN相同,否則會報錯,原因是不能同時給同一個Server生成兩個證書請求文件。
3)生成Client證書
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key
4)驗證Client證書
openssl verify -CAfile ca.crt client.crt
5)生成p12格式的Client證書
openssl pkcs12 -export -inkey client.key -in client.crt -out client.pfx
注:
由于在Windows下瀏覽器只能安裝p12格式的客戶端證書,因此要將.crt格式的Client證書轉換成p12格式的證書。在SSL雙向認證時需要客戶端也安裝自己的證書文件。
4 配置HTTP服務器
修改 Apache24\conf\httpd.conf 文件:
1)修改偵聽端口號,將‘Listen 80’中的80改為想要設置的HTTP偵聽端口號
若改成80端口以外的端口號,在用瀏覽器訪問HTTP服務器時,URL中需指明端口號,格式是:
其中,hostip指HTTP服務器主機的IP或域名,port是HTTP服務器偵聽端口號
建議使用默認值80,若改為其他值,在服務器上用wireshark抓IP進行分析時,wireshark不能解析HTTP報文,不利于分析。
2)將DocumentRoot " \({SRVROOT}/htdocs"用#注釋掉,改為 DocumentRoot "D:\httpdocs" #DocumentRoot "\) {SRVROOT}/htdocs"
DocumentRoot "D:\httpdocs"
3)將用#注釋掉,改為 #
注:
D:/httpdocs就是HTTP訪問的文件根目錄,也可以改成其他文件目錄,但DocumentRoot和Directory中的目錄必須一致
5 配置HTTPS服務器
5.1 修改 Apache24\conf\httpd-ssl.conf 文件
1)修改偵聽端口號,將‘Listen 433'中的443改為想要偵聽的端口。
同樣建議使用默認值443,若改為其他值,在服務器上用wireshark抓IP進行分析時,wireshark不能解析HTTPS報文。
2)將 SSLCertificateFile 后面的服務器證書文件路徑修改為 " \({SRVROOT}/conf/ssl/server.crt" SSLCertificateFile "\) {SRVROOT}/conf/ssl/server.crt"
SRVROOT變量的值就是“/Apache24”
3)將SSLCertificateKeyFile后面的服務器私鑰文件路徑修改為 " \({SRVROOT}/conf/ssl/server.key" SSLCertificateKeyFile "\) {SRVROOT}/conf/ssl/server.key"
4)將SSLCACertificateFile后面的CA證書文件路徑修改為 " \({SRVROOT}/conf/ssl/ca.crt" SSLCACertificateFile "\) {SRVROOT}/conf/ssl/ca.crt"
此項設置只用于雙向認證,如果不需要做雙向認證,CA證書路徑不設置
5)將DocumentRoot后面的文件路徑修改為 "D:\httpsdocs"
DocumentRoot "D:\httpsdocs"
6)將以下3行用#號注釋掉
SSLOptions +StdEnvVars
增加以下行:
SSLOptions +StdEnvVars
Options +Indexes FollowSymLinks +ExecCGI
AllowOverride AuthConfig FileInfo
Order allow,deny
Allow from all
此處若不做修改,HTTPS服務器會無法訪問,瀏覽器會顯示403錯誤,錯誤信息是“服務器可能要求登錄”。
注:
與設置HTTP服務器時類似,DocumentRoot和Directory表示HTTPS訪問的文件根目錄,可以設置成任何目錄,但DocumentRoot和Directory設置值必須保持一致
7)如果需要設置SSL雙向認證,需要將以下兩行前的#注釋符刪掉(即取消注釋):
SSLVerifyClient require
SSLVerifyDepth 10
5.2 修改Apache24\conf\extra\httpd-ahssl.conf文件
該文件中有三段以 行結尾的文本。后面兩段配置文本配置的是兩個虛擬主機,ServerName分別是serverone.tld:443和servertwo.tld:443。這兩個虛擬主機我們都不用,因此將后面兩段之間(包括這兩行)的內容用#注釋掉。
接下來修改第一段之間的配置文本,ServerName是localhost:443。
1)修改偵聽端口號,將‘Listen 433'中的443改為想要偵聽的端口。
建議使用443默認值,若改為其他值,在服務器上用wireshark抓IP進行分析時,wireshark不能解析HTTPS報文。
2)將SSLCertificateFile后面的服務器證書路徑修改為 " \({SRVROOT}/conf/ssl/server.crt" SSLCertificateFile "\) {SRVROOT}/conf/ssl/server.crt"
3)將SSLCertificateKeyFile后面的服務器私鑰文件路徑修改為 " \({SRVROOT}/conf/ssl/server.key" SSLCertificateKeyFile "\) {SRVROOT}/conf/ssl/server.key"
4)將DocumentRoot " \({SRVROOT}/htdocs" 注釋掉,修改為DocumentRoot "D:/httpsdocs" # DocumentRoot "\) {SRVROOT}/htdocs"
DocumentRoot "D:\httpsdocs"
5)將注釋掉,修改為 #
注:
若此處是
SSLOptions +StdEnvVars 那么需要將這3行注釋掉,增加以下行 SSLOptions +StdEnvVars Options +Indexes FollowSymLinks +ExecCGI AllowOverride AuthConfig FileInfo Order allow,deny Allow from all 安裝httpd-2.4.25-x64時此處此處已經改好了,不需要另外做修改;但在安裝httpd-2.2.32-x86時發現需要修改的。 6)如果要配置SSL雙向認證,需在SSLCertificateKeyFile "\) {SRVROOT}/conf/ssl/server.key"行之后增加以下3行內容:
SSLCACertificateFile "${SRVROOT}/conf/ssl/ca.crt"
SSLVerifyClient require
SSLVerifyDepth 10
5.3 配置SSL單向認證/雙向認證
如果需要將HTTPS服務器配置成SSL雙向認證,打開5.2節7)的設置和5.3節7)的設置,重啟Apache;
如果需要將HTTPS服務器配置成SSL單向認證,將5.2節7)的設置和5.3節7)的設置注釋掉,重啟Apache;
6 瀏覽器測試
測試之前,在D:/httpdocs目錄下新建一個index.html文件,用文本編輯器打開后寫入“HTTP works”;在D:/httpsdocs目錄下同樣新建一個index.html文件,寫入“HTTPS works”。
6.1 測試HTTP服務器
在局域網內另一臺電腦的IE瀏覽器地址欄輸入http://hostip,其中hostip是服務器主機的IP或域名。
如果瀏覽器中顯示“HTTP如果瀏覽器中顯示“HTTP works”,表示HTTP服務器工作正常。
6.2 測試HTTPS單向認證
按照第5章的描述將HTTPS服務器設置成SSL單向認證
1)在IE瀏覽器地址欄輸入https://hostip(hostip是服務器的IP或域名),此時無法正常訪問服務器,原因是沒有導入服務器的證書和CA證書。
2)導入服務器證書和CA證書
打開IE瀏覽器"Internet選項"——>“內容”——>“證書”,在彈出的“證書”窗口中,點擊“受信任的根證書頒發機構”,導入ca.crt文件;然后點擊“受信任的發布者”,導入server.crt文件。
3)重啟IE瀏覽器,在地址欄輸入https://hostip,如果顯示“HTTPS works”,則表示HTTPS服務器工作正常。
6.3 測試HTTPS雙向認證
按照第4章的描述將HTTPS服務器設置成SSL雙向認證
1)在IE瀏覽器地址欄輸入https://hostip
此時會發現,雖然已經導入服務器的證書和CA證書,但仍然無法正常訪問HTTPS服務器,原因是設置了SSL雙向認證后,服務器也會對客服端進行認證,只有受信任的客戶端才能訪問服務器。
2)雙擊client.pfx文件,安裝客戶端證書
完成客戶端證書的安裝后,在IE瀏覽器“Internet選項”——>“內容”——>“證書”——>"個人“中看到安裝的client證書
3)重啟IE瀏覽器,在地址欄輸入https://iphost
這時會發現就已經可以正常訪問HTTPS服務器了。
看文倉www.kanwencang.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20170214/101312.html
文章列表