Apache安裝及配置ssl

目錄

1.windows安裝linux

  1. 軟件準備
  2. 安裝apache
  3. 開啓ssl(Https訪問)
    1. 打開httpd.conf,解除下面配置的註釋算法

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

    3. 配置https虛擬主機windows

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

2.linux安裝(暫無)瀏覽器

  1. 軟件準備
  2. 安裝apache
  3. 開啓ssl(Https)

 

一.windows下安裝

1.軟件準備

   因爲Apache HTTP Server官方不提供二進制(可執行)的發行版,因此咱們選擇貢獻者編譯完成的版本,此處使用ApacheHaus提供的版本。服務器

  打開->Apache Haus Downloads數據結構

  

  下載Apache,其餘按需下載dom

  

   此處鄙人選擇2.4.x vc9 x86版,下載後以下: ide

  

 

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

相關文章
相關標籤/搜索