1. 程式人生 > >apache 虛擬主機啟用SSL

apache 虛擬主機啟用SSL

後面根據實際情況寫了我自己配的操作!

本文章在LINUX9+apache2.0.52,tomcat5.5.6,j2se1.5,openssl0.97上實驗通證
本文的目的是為了交流,如有出錯的地方,請指教
轉載請註明出處,並保持文章的完整性
現在開始安裝

首先在安裝之前要明白一些基本概念

1、SSL所使用的證書可以是自己建的生成的,也可以通過一個商業性CA如Verisign 或 Thawte簽署證書。


2、證書的概念:首先要有一個根證書,然後用根證書來簽發伺服器證書和客戶證書,一般理解:伺服器證書和客戶證書是平級關係。在SSL必須安裝根證書和伺服器證書來認證。

因此:在此環境中,至少必須有三個證書:即根證書,伺服器證書,客戶端證書
在生成證書之前,一般會有一個私鑰,同時用私鑰生成證書請求,再利用證書伺服器的根證來簽發證書。

3、簽發證書的問題:我最近找了很多關於openssl的資料,基本上只生成了根證書和私鑰及伺服器證書請求,並沒有真正的實現簽證。我這裡參考了一些資料,用openssl自帶的一個CA.sh來簽證書,而不是用MOD_ssl裡的sign.sh來籤。

用openssl語法來生成證書,有很多條件限定,如目錄,key的位置等,比較麻煩,我實驗了好幾天,最後放棄了。有興趣的可以參考一下openssl手冊。


步驟一:安裝openssl和apache


1、到www.openssl.org下載openssl-0.9.7e.tar.gz(目前最新版)
2、解除安裝掉老的opensll庫 

#rpm –e –-nodeps openssl 

 
3、解壓:

#tar xzvf openssl-0.9.7e.tar.gz


4、進入openssl目錄,並安裝,用--prefix指定openssl安裝目錄

#cd openssl-0.9.7e

#./config --prefix=/usr/local/openssl
#make
#make test
#make install 



5、安裝apache
至www.apache.org/dist下載apache最新版httpd-2.0.52.tar.gz
解壓後進入apache目錄,根據需要安裝需要的模組,我這裡裝了ssl,rewrite,動態模式安裝

#tar zxvf httpd-2.0.52.tar.gz

#cd httpd-2.0.52
#./configure  --prefix=PREFIX   --enable-ssl   --enable-rewrite  --enable-so   --with-ssl=/usr/local/openssl
#make
#make install



步驟二:簽證
安裝openssl後,在openssl下有一個CA.sh檔案,就是利用此檔案來簽證,
來籤三張證書,然後利用這三張證書來布SSL伺服器。

1、在/usr/local/apache/conf下,建立一個ssl.crt目錄,將CA.sh檔案copy至/usr/local/apache/conf/ssl.crt/目錄

[[email protected] ssl]# cp /usr/local/openssl/ssl/misc/CA.sh /usr/local/apache/conf/ssl.crt/CA.sh



2、執行CA.sh -newca,他會找你要CA需要的一個CA自己的私有金鑰密碼檔案。如果沒有這個檔案?按回車會自動建立,輸入密碼來保護這個密碼檔案。之後會要你的一個公司資訊來做CA.crt檔案。最後在當前目錄下多了一個./demoCA這樣的目錄../demoCA/private/cakey.pem就是CA的key檔案啦,./demoCA/cacert.pem就是CA的crt檔案了

[[email protected] ssl.crt]# ./CA.sh -newca



要求輸入如下資訊:
引用:Country Name (2 letter code) [GB]:CN
State or Province Name (full name) [Berkshire]:FUJIAN
Locality Name (eg, city) [Newbury]:FUZHOU
Organization Name (eg, company) [My Company Ltd]:FJJM
Organizational Unit Name (eg, section) []:FD
Common Name (eg, your name or your server's hostname) []:WIN
Email Address []:[email protected]


這樣就建好了一個CA伺服器,有了一個根證書的私鑰cakey.pem及一張根證書cacert.pem,現在就可以cacert.pem來給簽證了

3、簽署伺服器證書
生成伺服器私鑰:

[[email protected] ssl.crt]# openssl genrsa -des3 -out server.key 1024


生成伺服器證書請求

[[email protected] ssl.crt]# openssl req -new -key server.key -out server.csr


會要求輸入資訊

Country Name (2 letter code) [GB]:CN

State or Province Name (full name) [Berkshire]:FUJIAN
Locality Name (eg, city) [Newbury]:FUZHOU
Organization Name (eg, company) [My Company Ltd]:FJJM
Organizational Unit Name (eg, section) []:FD
Common Name (eg, your name or your server's hostname) []:WIN
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:WIN
An optional company name []:WING



最後把server.crt檔案mv成newreq.pem,然後用CA.sh來簽證就可以了

[[email protected] ssl.crt]# mv server.csr newreq.pem

[[email protected] ssl.crt]# ./CA.sh -sign

這樣就生成了server的證書newcert.pem
把newcert.pem改名成server.crt

[[email protected] ssl.crt]# mv newcert.pem server.crt




4、處理客戶端:
生成客戶私鑰:

[[email protected] ssl.crt]# openssl genrsa -des3 -out client.key 1024


請求

[[email protected] ssl.crt]# openssl req -new -key client.key -out client.csr


簽證:

[[email protected] ssl.crt]# openssl ca -in client.csr -out client.crt


把證書格式轉換成pkcs12格式

[[email protected] ssl.crt]# openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx



5、這時就有了三張證書和三個私鑰,一個是demoCA下的根證書,ssl.crt下的伺服器證書和客戶證書。及demoCA/private下的根key,ssl.crt下的伺服器key和客戶key,在conf下的ssl.conf下指定證書的位置和伺服器key的位置.

我是在conf下建立一個ssl.crt目錄,並將所有的key和證書放到這裡

#cp demoCA/cacert.pem cacert.pem


同時複製一份證書,更名為ca.crt

#cp cacert.pem ca.crt




=============================================以下幾步我的與原文章作者不太樣,這是原作者的:
步驟三、編輯ssl.conf

#cd /usr/local/apache/conf


編輯ssl.conf

指定伺服器證書位置

SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
指定伺服器證書key位置
SSLCertificateKeyFile /usr/local/apache/conf/ssl.crt/server.key
證書目錄
SSLCACertificatePath /usr/local/apache/conf/ssl.crt
根證書位置
SSLCACertificateFile /usr/local/apache/conf/ssl.crt/cacert.pem
開啟客戶端SSL請求
SSLVerifyClient require
SSLVerifyDepth  1



啟動ssl

/usr/local/apache/bin/apachectl startssl

會要求輸入server.key的密碼
啟動,這樣一個預設的SSL伺服器及http伺服器就啟動了,

步驟四、安裝和使用證書
把剛才生成的證書:根證書ca.crt和客戶證書client.pfx下到客戶端,並安裝,
ca.crt安裝到信任的機構,client.pfx直接在windows安裝或安裝到個人證書位置,然後用IP訪問HTTP和https伺服器。

=================================以下是我實際操作的

開啟/usr/local/apache/conf/httpd.conf

加上:

Include conf/extra/httpd-ssl.conf

或把這行的前面的註釋去掉

儲存,

再開啟/usr/local/apache/conf/extra/httpd-ssl.conf

留下以下幾行,其它的全部註釋或刪除

Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/usr/local/apache/logs/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLMutex  "file:/usr/local/apache/logs/ssl_mutex"

當然如果把SSL的慮擬主機放在這個檔案裡那就把下面的放到這個檔案也行,

開啟/usr/local/aapche/conf/extra/httpd-vhost.conv

把需要啟用SSL的慮擬主機配置如下:

<VirtualHost *:443>
    ServerAdmin [email protected]
    DocumentRoot "/var/www"
    ServerName www.server.com:443
    ErrorLog "/var/logs/www-error_log"
    TransferLog "/var/logs/www-access_log"
    SSLEngine on
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

    SSLCertificateFile "/usr/local/apache/conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "/usr/local/apache/conf/ssl.crt/server.key"

    <FilesMatch "/.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    CustomLog "/var/logs/www-ssl_request_log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x /"%r/" %b"


</VirtualHost>

這樣重啟apache訪問網站時用https://www.server.com就可以了,但會提示證書不受信任,呵呵,因為是個人制作的證書,不是所謂的權威機構弄的,所以不受信任,可以手動加為受信任就可以了

相關推薦

apache 虛擬主機啟用SSL

後面根據實際情況寫了我自己配的操作! 本文章在LINUX9+apache2.0.52,tomcat5.5.6,j2se1.5,openssl0.97上實驗通證 本文的目的是為了交流,如有出錯的地方,請指教 轉載請註明出處,並保持文章的完整性 現在開始安裝 首先在安裝之前要

Apache虛擬目錄、用戶認證、基於端口/IP/域名的虛擬主機SSL

mage nss pda noexec serve 啟動 enable clu adc 環境配置: 配置DNS以便域名解析 安裝Bind軟件包。 yum install -y bind 2. 修改Bind配置文件。 vim /etc/named.conf liste

Apache虛擬主機、通過ssl加密的https超文字傳輸協議

1.apache的虛擬主機 定義 可以讓一臺主機apache伺服器在被訪問不同域名的時候顯示不同的主頁 建立測試頁 mkdir -p /var/www/virtual/news.westos.com/html echo “news news n

IP、Apache虛擬主機配置部分學習筆記

當前 環境變量 httpd 無法 php nbsp 轉換 配置系統 語法 IP地址 IP地址就是計算機的一個“編號”,該編號是唯一的。相當於我們的身份證號碼一樣。 IP地址格式:a.b.c.d ,每一段的取值範圍0-255。 本機的IP地址:127.0.0.1

Apache虛擬主機配置

但是 direct driver ear 本地ip 端口配置 端口號 oot body Apache虛擬主機配置 在一個Apache服務器上可以配置多個虛擬主機,實現一個服務器提供多站點服務,其實就是訪問同一個服務器上的不同目錄。Apache虛擬主機配置有3中方法:

43.apache虛擬主機的使用

linuxapache虛擬主機的使用虛擬主機技術是使用一臺服務器實現發布多個網站的技術。實現一臺服務器多個網站的方法有:基於網卡,基於端口,基於域名。基於網卡:一臺主機添加多塊網卡,就相當於有多個IP基於端口:一臺主機通過同一個IP不同的端口基於域名:一臺主機通過同一個IP同一個端口不通的域名Rpm版apac

LAMP-Apache虛擬主機

虛擬主機 在一個Apache服務器上可以配置多個虛擬主機,實現一個服務器提供多站點服務,其實就是訪問同一個服務器上的不同目錄。Apache虛擬主機配置有3中方法:基於IP配置、基於域名配置和基於端口配置。下面將演示基於域名的虛擬主機。1、編輯httpd.conf[[email protecte

Ubuntu #Apache2 Ubuntu 14.04 LTS系統中設置Apache虛擬主機

line roo def itl val 所有者 根目錄 you and 虛擬主機常用於在一個單獨的IP地址上提供多個域名的網站服務。如果有人想在單個VPS的單個IP地址運行多個網站,這是非常有用的。在這個教程中,讓我告訴你如何設置在Ubuntu 14.04 LTS的Apa

Apache虛擬主機

usr 支持 .com ... 類型 www. bsp tar 基於 基本概述 虛擬Web主機  在同一臺服務器中運行多個Web站點,其中每一個站點並不獨立占用一臺真正的計算機 httpd支持的虛擬主機類型 基於域名的虛擬主機 基於IP地址的虛擬主機 基於端口的

apache虛擬主機防止php網頁木馬vhost.conf文件配置

dir follow col sym tom common .cn 虛擬 dex <VirtualHost *> DocumentRoot "/www/www.abc.com" ServerName www.abc.com Server

虛擬主機配置ssl

class clas 應用 mage post 圖片 div 虛擬主機 虛擬主機配置 虛擬主機配置ssl 在微信應用中,需要證書中的三個文件全部引入,否則會出現白屏。虛擬主機配置ssl

Apache虛擬主機配置詳解

Apache虛擬主機分類詳解 Apache基於IP虛擬主機配置 Apache基於域名的虛擬主機配置 Apache基於端口的虛擬主機配置 Apache虛擬主機配置詳解1、配置環境說明系統環境:CentOS7Apache環境:編譯安裝的httpd-2.4.7系統限制:關閉了防火墻和selinux

LAMP環境搭配之配置apache虛擬主機

apache 虛擬主機 apache主配置文件/usr/local/apache2.4/conf/httpd.conf 定義網站根目錄 DocumentRoot "/usr/local/apache2.4/htdocs" 定義網站域名 ServerName www.example.com:80 定

配置Apache虛擬主機,實現在一臺服務器上運行多個網站

Apache多實例演示Apache虛擬主機實現有三種方法:1、通過不同的IP地址2、通過不同的域名3、通過不同的端口號 1、通過不同的IP地址,解析不同的域名(1)給服務器增加IP(另一個域名解析)[root@http ~]# ifconfig eth0:1 192.168.2.12查看添加成功(2)創建測試

Apache虛擬主機綁定域名證書和ssl_module模塊

apache Linux 本文檔只是用於yum安裝的Apache!!! HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎

Apache和PHP結合,Apache虛擬主機

LinuxApache和PHP結合 安裝完PHP和Apache後,首先編輯Apache的配置文件, 我的Apache是安裝在 /usr/local/apache2.4 這個目錄下那麽配置文件就在 /usr/local/apache2.4/conf/httpd.conf 這個位置 編輯配置文件vim /usr/

Apache虛擬主機+AD壓力測試

虛擬主機 服務 rhel6 通過 mas stats 導致 系統 找到 <Directory "/usr/local/awstats/wwwroot"> Options NoneAllowOverride None Order allow,deny Allow

【Share Code】如何在Ubuntu 14.04 LTS上設定Apache虛擬主機

## 原文 & 視訊:https://zhaoshuquan.com/posts/8 ## 準備 安裝Apache,具體安裝過程可以參考這篇文章https://zhaoshuquan.com/posts/4 ## 第一步 - 建立目錄 第一步是建立一個目錄結構,該結構將儲存為訪問

apache虛擬主機虛擬目錄的配置與區別

首先,我對虛擬目錄的理解就是: 配置一個路徑訪問相應的專案所在地 其次,再是虛擬主機的理解就是: 配置域名或者埠到主機上訪問不同路徑下的專案(這裡主機可以是多個) 接著,先來看虛擬目錄吧! 一、先把httpd.conf裡的預設路徑給註釋掉,因為要自行定義目錄 二、找到IfM

伺服器 | 用phpStudy配置Apache虛擬主機

我的pc一直用wamp配置虛擬主機的,在公司同事跟我說試下用phpStudy,就試了下用phpStudy配置Apache虛擬主機,感覺很方便。 1、下載安裝phpStudy 2、修改 http