apache http server 開啓ssl 與tomcat交互

最近作的項目要求使用https訪問。在網上看了些資料,又看了看apache http server的文檔(有中文版的,並且翻譯的很好)。 
先說下原理:瀏覽器 到 http server 使用https加密通訊,http server 與tomcat通訊使用http。因此tomcat不用開啓https。把http server開啓https就能夠了。瀏覽器先請求http server,http server再將請求轉發給tomcat。 

環境:window XP; 
軟件: 
一、httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi 
二、apache-tomcat-6.0.18 
配置過程: 
1. 打開apache的配置文件conf/httpd.conf。找打以下行代碼,去掉其前邊的註釋井號(#) javascript

Java代碼 java

 收藏代碼

  1. LoadModule ssl_module modules/mod_ssl.so  
  2. Include conf/extra/httpd-ssl.conf  
  3. #以上2行是開啓ssl  
  4.   
  5. LoadModule proxy_module modules/mod_proxy.so  
  6. LoadModule proxy_http_module modules/mod_proxy_http.so  
  7. #以上2行是爲了https給轉發tomcat  


2.修改conf/extra/httpd-ssl.conf 文件裏的兩個字段:去掉其註釋 
SSLCertificateKeyFile "C:/Apache2/conf/server.key" 
SSLCertificateFile "C:/Apache2/conf/server.crt" 
暫時server.key和server.crt還沒生成。 
在<VirtualHost _default_:443>中插入以下代碼 node

Java代碼 web

 收藏代碼

  1. SSLProxyEngine on   
  2. ProxyRequests off   
  3. #sys  
  4. ProxyPass /sys/ http://127.0.0.1:8882/sys/  
  5. ProxyPassReverse /sys/ http://127.0.0.1:8882/sys/  
  6. #pfs  
  7. ProxyPass /pfs/ http://127.0.0.1:8885/pfs/  
  8. ProxyPassReverse /pfs/ http://127.0.0.1:8885/pfs/  
  9. #注意我開啓了2個tomcat應用,對應2個端口。8882端口是tomcat的http端口。  


3. 爲網站服務器生成證書及私鑰文件 
1)生成服務器的私鑰 
進入apache http server安裝目錄的bin目錄下,在命令行裏執行: apache

Java代碼 瀏覽器

 收藏代碼

  1. openssl genrsa -out server.key 1024  


在當前目錄下生成了一個server.key 
可用openssl genrsa –help查看幫助 
2)生成自簽署證書 
    首先,在當前目錄建立demoCA,裏面建立如下文件, 
文件:index.txt內容爲空 
文件:serial(無擴展名)內容爲01 
文件夾newcert 
執行下邊的命令,便可生成server.crt文件。 tomcat

Java代碼 安全

 收藏代碼

  1. openssl req -new -x509 -days 365 -key server.key -out server.crt -config ..\conf\openssl.cnf  


在當前目錄下生成了一個server.csr;在這一命令執行的過程當中,系統會要求您填寫以下信息: 
Country Name (2 letter code):使用國際標準組織(ISO)國碼格式,填寫2個字母的國家代號。中國請填寫CN。 
State or Province Name (full name): 省份,好比填寫BeiJing 
Locality Name (eg, city): 城市,好比填寫BeiJing 
Organization Name (eg, company): 組織單位,好比填寫ABC 
Organizational Unit Name (eg, section): 好比填寫IT Dept 
Common Name (eg, your websites domain name): 域名,若是你用localhost域名測試,就輸入localhost;若是用ip測試就輸入ip地址 
注意: 
行使 SSL 加密的網站地址。請注意這裏並非單指您的域名,而是直接使用 SSL 的網站名稱 例如:pay.abc.com。一個網站這裏定義是: abc.com 是一個網站; www.abc.com 是另一個網站; pay.abc.com 又是另一個網站。 

Email Address: 郵件地址,能夠不填 
A challenge password: 能夠不填 
An optional company name:能夠不填 

而後將  server.crt,server.key複製到apache的conf文件夾下,重啓apache 
5.訪問https://localhost 
看到 it works表明配置成功。 

不過因爲,咱們的CA不是由第三方機構頒發的,而是咱們本身頒發的,因此,IE訪問的時候,會顯示,這個證書不是由Trused CA Authenticator頒發,告訴咱們可能有安全隱患。若是要消除安全警告。在瀏覽器裏導入證書便可。 
https配完了,能夠登陸https://localhost/sys/login.jsp進行驗證 

備註:也能夠一次生成證書 
$ openssl req -new -x509 -nodes -out server1.crt -keyout server1.key -config ..\conf\openssl.cnf 服務器

相關文章
相關標籤/搜索