目錄
2.linux安裝(暫無)
- 軟件准備
- 安裝apache
- 開啟ssl(Https)
一.windows下安裝
1.軟件准備
由於Apache HTTP Server官方不提供二進制(可執行)的發行版,所以我們選擇貢獻者編譯完成的版本,此處使用ApacheHaus提供的版本。
下載Apache,其他按需下載
此處鄙人選擇2.4.x vc9 x86版,下載后如下:
2.安裝apache
1.解壓文件,將解壓后的Apache2X目錄放到合適的目錄下
2.添加bin目錄到環境變量,打開控制台,輸入 httpd -k install 安裝Apache
3.打開ApacheMonitor,點start開啟apache服務
4.根據需要修改httpd.conf配置文件內容
Define SRVROOT "/Apache24" #定義配置變量SRVROOT ServerRoot "${SRVROOT}" #服務器根目錄 Listen 80 #監聽80端口 DocumentRoot "${SRVROOT}/htdocs" #定義文件根目錄 htdocs <Directory "${SRVROOT}/htdocs">... #文件根目錄htdocs配置 #SSL配置 <IfModule ssl_module> #Include conf/extra/httpd-ssl.conf Include conf/extra/httpd-ahssl.conf SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule>
5.瀏覽器輸入localhost測試服務器是否正常
出現此頁面則說明apache服務器已正常運行
6.測試https,Apache Haus下載的apache服務器一般配置默認開啟https訪問,可以手動輸入https訪問:
3.開啟ssl(Https訪問)
從Apache Haus下載的apache服務器一般配置默認開啟ssl。此處作配置詳解:
由於apache已經自帶ssl模塊,省去了下載的事。
①打開httpd.conf,解除下面配置的注釋
LoadModule ssl_module modules/mod_ssl.so
②移到坐標大概520行,查看ssl模塊使用哪一個配置文件
*科普:httpd-ssl.conf 與httpd-ahssl.conf有什么不同? 根據命名可以看出 ahssl 是 Apache Haus 自帶的ssl配置,其已經為我們生成好ssl私鑰和證書文件,於conf/ssl目錄下。 當然你可以不使用ahssl配置,而是修改使用ssl配置虛擬主機,自己去生成ssl服務器證書。
虛擬主機配置區別
Https協議使用443端口,使用httpd-ssl.conf或httpd-ahssl.conf配置虛擬主機
Http協議使用80端口,使用httpd-vhosts.conf配置虛擬主機
如果虛擬主機在2個端口均有配置,則使用https訪問時,使用httpd-ssl.conf或httpd-ahssl.conf配置;使用http訪問時,使用httpd-vhosts.conf配置
③配置https虛擬主機
第一種,簡單配置->修改使用httpd-ahssl.conf中的配置
復制httpd-ahssl.conf 內的虛擬主機配置,修改如下:
<VirtualHost _default_:443> #監聽443端口的虛擬主機, _default_ 是默認根目錄,一般指訪問localhost,此處修改為虛擬主機名(如下的baiduu.com) SSLEngine on ServerName baiduu.com:443 #修改此處虛擬主機名 SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt" #ssl證書文件 SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key" #ssl私鑰文件 DocumentRoot "D:/workplace/baiduu" #修改此處虛擬主機目錄 # DocumentRoot access handled globally in httpd.conf CustomLog "${SRVROOT}/logs/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" <Directory "${SRVROOT}/htdocs"> Options Indexes Includes FollowSymLinks AllowOverride AuthConfig Limit FileInfo Require all granted </Directory> </virtualhost>
重啟apache,使用https://www.baiduu.com 訪問試試。
當然,如果你在httpd-vhosts.conf中也配置了此虛擬主機。則可以輸入http://www.baiduu.com 使用80端口訪問此頁面。
第二種,自己生成ssl服務器證書
1.在DOS命令下進入apache/bin目錄
2.執行命令
set OPENSSL_CONF=..\conf\openssl.cnf
請在執行之前確保conf\openssl.cnf 存在,否則會出現:WARNING: can't open config file: /usr/local/ssl/openssl.cnf 信息提示。
3.生成私鑰文件:
執行命令
openssl genrsa 1024>server.key
說明:這是用128位rsa算法生成密鑰,得到server.key文件。 > 是輸出文件的標識符
這種生成方法生成的是沒有密鑰的私鑰文件。當然,Apache提供了加入密鑰(Password)的命令,就是加入參數-des3。命令為:
openssl genrsa 1024 -des3 > server.key
使用上述命令生成私鑰文件是需要輸入密鑰的,運行的時候會讓你輸入並確認你的密鑰。但是在Windows環境下會導致以下錯誤:錯誤:Apache啟動失敗,錯誤提示是:Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file .....)
原因是window下的apache不支持加密的私鑰文件。
注:生成的證書中RSA密鑰對的默認長度是1024,取值是2的整數次方。建議使用4096以上。
4.生成證書請求文件。
執行命令
openssl req -new -key server.key > server.csr
說明:這是用步驟3的密鑰生成證書請求文件server.csr, 這一步會有很多參數,需要一一輸入。
按提示輸入一系列的參數:
Country Name (2 letter code) [AU]:CN ISO國家代碼(只支持兩位字符)
State or Province Name (full name) [Some-State]:ZJ所在省份
Locality Name (eg, city) []:HZ所在城市
Organization Name (eg, company):SW_TECH公司名稱
Organizational Unit Name (eg, section) []:SW_TECH組織名稱
Common Name (eg, YOUR name) []:kedou.com申請證書的域名
Email Address []:admin@admin.com 管理員郵箱
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: 交換密鑰
An optional company name []: 注:Common Name必須和httpd.conf中server name必須一致,否則apache不能啟動 (啟動apache時錯誤提示為:RSA server certificate CommonName (CN) `Kedou' does NOT match server name!? )
5.簽署服務器證書文件:
執行命令行
openssl req -x509 -days 365 -key server.key -in server.csr > server.crt
說明:這是用步驟3,4的的密鑰和證書請求生成證書server.crt,-days參數指明證書有效期,單位為天,x509表示生成的為X.509證書。
以上簽署證書僅僅做測試用,真正運行的時候,應該將CSR發送到一個CA返回真正的證書。網上有些文檔描述生成證書文件的過程比較繁瑣,就是因為 他們自己建立了一個CA中心,然后再簽署server.csr
用openssl x509 -noout -text -in server.crt 可以查看證書的內容。證書實際上包含了Public Key
=========比上面更快捷的方法↓:
1.在DOS命令下進入apache/bin目錄
2.簽發證書
openssl req -config ../conf/openssl.cnf -new -out server.csr -keyout server.pem
其中openssl.cnf為apache自帶的openssl配置文件,引用到該文件的完整路徑
輸入兩次密碼,隨便什么密碼,然后一直回車,跳過下面的輸入
3.生成密鑰文件
openssl rsa -in server.pem -out server.key
輸入剛才制定的密碼
4.生成證書文件
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
6.把 server.key,server.crt 復制到conf/虛擬主機名/ssl/目錄下
7.配置https虛擬主機
打開httpd-ssl.conf,復制httpd-ahssl.conf的虛擬主機配置(當然你可以直接在httpd-ahssl.conf配置使用),更改如下:
<VirtualHost 虛擬主機名:443> SSLEngine on ServerName 虛擬主機名:443 SSLCertificateFile "${SRVROOT}/conf/虛擬主機名/ssl/server.crt" #ssl證書文件 SSLCertificateKeyFile "${SRVROOT}/conf/虛擬主機名/ssl/server.key" #ssl私鑰文件 DocumentRoot "虛擬主機目錄" #修改此處虛擬主機目錄 # DocumentRoot access handled globally in httpd.conf CustomLog "${SRVROOT}/logs/ssl_request.log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" <Directory "${SRVROOT}/htdocs"> Options Indexes Includes FollowSymLinks AllowOverride AuthConfig Limit FileInfo Require all granted </Directory> </virtualhost>
重啟apache,使用https://www.baiduu.com 訪問試試。
當然,如果你在httpd-vhosts.conf中也配置了此虛擬主機。則可以輸入http://www.baiduu.com 使用80端口訪問此頁面。