Apache安裝及配置ssl


目錄

1.windows安裝

  1. 軟件准備
  2. 安裝apache
  3. 開啟ssl(Https訪問)
    1. 打開httpd.conf,解除下面配置的注釋

    2. 查看ssl模塊使用哪一個配置文件

    3. 配置https虛擬主機

      1. 簡單配置
      2. 生成ssl服務器證書

2.linux安裝(暫無)

  1. 軟件准備
  2. 安裝apache
  3. 開啟ssl(Https)

 

一.windows下安裝

1.軟件准備

   由於Apache HTTP Server官方不提供二進制(可執行)的發行版,所以我們選擇貢獻者編譯完成的版本,此處使用ApacheHaus提供的版本。

  打開->Apache Haus Downloads

  

  下載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端口訪問此頁面。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM