最近作的項目要求使用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
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
3. 爲網站服務器生成證書及私鑰文件
1)生成服務器的私鑰
進入apache http server安裝目錄的bin目錄下,在命令行裏執行: apache
Java代碼 瀏覽器
在當前目錄下生成了一個server.key
可用openssl genrsa –help查看幫助
2)生成自簽署證書
首先,在當前目錄建立demoCA,裏面建立如下文件,
文件:index.txt內容爲空
文件:serial(無擴展名)內容爲01
文件夾newcert
執行下邊的命令,便可生成server.crt文件。 tomcat
Java代碼 安全
在當前目錄下生成了一個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 服務器