windows下的配置主要是參考:http://blog.csdn.net/supersky07/article/details/7407523
我需要的主要還是linux下的配置,不過windows下和linux下的原理應該差不多,並且windows下講解比較清楚,因而記錄下來以便於進行對比。
Windows下Tomcat配置https環境:
(1)進入到jdk下的bin目錄
(2)輸入如下指令“keytool -v -genkey -alias tomcat -keyalg RSA -keystore d:/tomcat.keystore”
d:/tomcat.keystore是將產生的tomcat.keystore放到d盤根目錄下。注意若要放到c盤,在win7系統下,需要以管理員身份進入到命令列中進行操作,否則是無法建立tomcat.keystore的。本例放到d盤下。
如何以管理員身份進入到命令列下呢?開始->搜尋方塊中輸入cmd->等待(注意不斷行符號)->出現cmd.exe->右鍵“以管理員身份運行”即可。
解釋:
keytool -genkey:自動使用預設的演算法產生公開金鑰和私密金鑰
-alias[名稱]:給認證取個別名
-keyalg:制定密鑰的演算法,如果需要制定密鑰的長度,可以再加上keysize參數,密鑰長度預設為1024位,使用DSA演算法時,密鑰長度必須在512到1024之間,並且是64的整數倍
-keystore:參數可以指定密鑰庫的名稱。密鑰庫其實是存放迷藥和認證檔案,密鑰庫對應的檔案如果不存在會自動建立。
-validity:認證的有效日期,預設是90天
-keypass changeit:不添加認證密碼
-storepass changeit:不添加儲存認證的密碼
輸入相關資訊後,最後確認,便會在tomcat根目錄下產生server.key檔案。
(3)輸入keystore密碼
密碼任意,此處以123456為例,要記住這個密碼,之後在進行server.xml配置時需要使用。
(4)輸入名字、組織單位、組織、市、省、國家等資訊
(5)輸入之後會出現確認的提示
此時輸入y,並斷行符號。此時建立完成keystore。
進入到D盤根目錄下可以看到已經產生的tomcat.xml
(6)輸入tomcat的主密碼
可以直接斷行符號,預設為同keystore的密碼一樣。
之後,會顯示正在儲存即完成。
(7)進入tomcat檔案夾
找到conf目錄下的sever.xml並進行編輯
將所有以<Connector port="8443" 開頭的connector注釋。
(8)在sever.xml中添加載入keystore的代碼
注意方框中的keystore的密碼,就是剛才我們設定的“123456”.
編輯完成後關閉並儲存sever.xml。
(9)啟動tomcat。
若出現如下錯誤“Keystore was tampered with,or password was incorrect”,即第(8)步設的密碼出錯了。請核對密碼,重新編寫sever.xml。
(10)啟動成功後,使用https://127.0.0.1:8443 訪問頁面
頁面成功開啟即tomcat下的https配置成功。
(11)應用程式HTTP自動跳轉到HTTPS
在應用程式中web.xml中加入:
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
(12)注意事項
1. 產生認證的時間,如果IE用戶端所在機器的時間早於認證生效時間,或者晚於有效時間,IE會提示“該安全性憑證已到期或還未生效”
2.如果IE提示“安全性憑證上的名稱無效或者與網站名稱不匹配”,則是由產生認證時填寫的伺服器所在主機的網域名稱“您的名字與姓氏是什嗎?”/“What is your first and last name?”不正確引起的
支援特定頁面採用HTTPS傳輸,普通頁面採用HTTP傳輸:
HTTPS相比HTTP來說,最大的好處就是安全,但是為了安全付出的代價是犧牲了效能。
所有我們需要採取控制,對特定需要https的頁面採用https傳輸,普通頁面採取http傳輸。
我們採用了過濾器,過濾器中的邏輯是這樣子的,分為四種情況:
1.當前協議是HTTPS,當前請求的URL是需要採取HTTPS傳輸的URL,直接請求頁面
2.當前協議是HTTPS,當前請求的URL是不需要採取HTTPS傳輸的URL,重新導向到HTTP的連接埠
3.當前協議是HTTP,當前請求的URL是不需要採取HTTPS傳輸的URL,直接請求該頁面
4.當前協議是HTTP,當前請求的URL是需要採取HTTPS傳輸的URL,重新導向到HTTPS的連接埠。
Linux的參考網址:http://wenku.baidu.com/view/5f7c090016fc700abb68fc4c.html
1:安裝jdk,
[root@localhost ~]# ls jdk-1_5_0_19-linux-i586.bin
jdk-1_5_0_19-linux-i586.bin
[root@localhost ~]# pwd
/root
[root@localhost ~]# chmod a+x jdk-1_5_0_19-linux-i586.bin
[root@localhost ~]# ./jdk-1_5_0_19-linux-i586.bin
在目前的目錄下產生jdk1.5.0_19目錄。
我把它移到/usr/local目錄下。
[root@localhost ~]# mv jdk1.5.0_19 /usr/local/
[root@localhost local]# ln -s jdk1.5.0_19 jdk
下面是配置路徑:
[root@localhost local]# vi /etc/profile
在檔案的最後加入:
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然後運行如下命令使得不重啟機器就生效:
[root@localhost local]# source /etc/profile
2:安裝tomcat, 其實上面配置路徑就是為了tomcat能正常啟動, 因為tomcat啟動時需要用到到jdk,
[root@localhost local]# tar zxvf apache-tomcat-5.5.26.tar.gz
[root@localhost local]# ln -s apache-tomcat-5.5.26 tomcat5.5
3:產生認證:
[root@localhost ~]# keytool -genkey -alias .keystore -keyalg RSA
Enter keystore password: hellohello
What is your first and last name?
[Unknown]: liu #這項要和你linux server的機器名一樣,這樣有好處!查linux server的機器名,可以用hostname命令
What is the name of your organizational unit?
[Unknown]: bea
What is the name of your organization?
[Unknown]: bea
What is the name of your City or Locality?
[Unknown]: suzhou
What is the name of your State or Province?
[Unknown]: suzhou
What is the two-letter country code for this unit?
[Unknown]: cn
Is CN=liu, OU=bea, O=bea, L=suzhou, ST=suzhou, C=cn correct?
[no]: yes
Enter key password for <.keystore>
(RETURN if same as keystore password): hellohello
尤其注意:兩次輸入的密碼一定要一樣!而且產生的.keystore的位置在~下(我用的是root,故在/root下)
[root@localhost ~]# find / -name .keystore
/root/.keystore
然後複製該檔案到/usr/local/tomcat5.5下(我tomcat安裝在/usr/local目錄下!)
查看該檔案的時候用ls -a
4:對server.xml做配置,
[root@localhost ~]# cd /usr/local/tomcat5.5/
[root@localhost tomcat5.5]# ls
bin common conf LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt server shared temp webapps work
[root@localhost tomcat5.5]# pwd
/usr/local/tomcat5.5
[root@localhost tomcat5.5]# ls -a
. .. bin common conf .keystore LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt server shared temp webapps work
[root@localhost tomcat5.5]# cd conf/
[root@localhost conf]# ls
Catalina catalina.policy catalina.properties context.xml logging.properties server-minimal.xml server.xml tomcat-users.xml web.xml
[root@localhost conf]# pwd
/usr/local/tomcat5.5/conf
[root@localhost conf]# vi server.xml
修改部分如下:
先把關於下面的注視去掉:
<Connector port="443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
keystoreFile="/usr/local/tomcat/.keystore"
keystorePass="hellohello"
clientAuth="false" sslProtocol="TLS" />
粗體是我修改的部分
4: 啟動tomcat
[root@localhost conf]# cd /usr/local/tomcat5.5/
[root@localhost tomcat5.5]# ls
bin common conf LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt server shared temp webapps work
[root@localhost tomcat5.5]# cd bin/
[root@localhost bin]# ls
bootstrap.jar commons-logging-api-1.1.1.jar jmxaccessor-tasks.xml shutdown.bat tomcat5w.exe version.bat
catalina.bat cpappend.bat jsvc.tar.gz shutdown.sh tomcat-juli.jar version.sh
catalina.sh digest.bat service.bat startup.bat tomcat-native.tar.gz
catalina-tasks.xml digest.sh setclasspath.bat startup.sh tool-wrapper.bat
commons-daemon.jar jkstatus-tasks.xml setclasspath.sh tomcat5.exe tool-wrapper.sh
[root@localhost bin]# pwd
/usr/local/tomcat5.5/bin
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat5.5
Using CATALINA_HOME: /usr/local/tomcat5.5
Using CATALINA_TMPDIR: /usr/local/tomcat5.5/temp
Using JRE_HOME: /usr/local/jdk
[root@localhost bin]# netstat -antl | grep 443
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
[root@localhost bin]#
這裡tomcat已經啟動了。
5:測試:啟動瀏覽器,