在tomcat中配置https一般會遇到兩種情況:
情況一:內網中使用keytool命令生成後綴名爲.keystore形式的證書;
情況二:到外網CA服務商申請證書,CA服務商發回的證書內,包含不同的服務器應用程序(例如nginx、apache)對應的證書。其中申請時會要設置密碼,這個密碼配置tomcat時需要用到。
針對tomcat需要使用到.jks後綴名的證書。
情況一配置方法:
方法如下:
命令行執行keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/https.keystore -keypass tomcat -storepass tomcat
-genkey 創建一個新的密鑰
-alias 設置此證書的別名
-keyalg 指定密鑰的算法
-storepass 指定訪問存取的密碼(如不在命令行中加上,那麼命令剛執行就會提示輸入密碼)
-keypass 指定密鑰庫的密碼(如不在命令行中加上,那麼命令結束執行就會提示輸入密碼)
此兩項設置相同較好
執行過程中會詢問你一些信息,比如國家代碼,省市等
2.打開conf目錄下的server.xml文件,找到以下這一段
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
它被註釋掉了,將註釋去掉,並將這一段改成以下
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat/https.keystore" keystorePass="tomcat"/>
註釋:keystorePass爲證書的密鑰庫密碼
3.之後啓動tomcat就可以了,通過https方式訪問8443端口,就能看到效果。如果用http訪問之前的端口,那麼還是普通的未加密連接,若要使得訪問http時強制跳轉到到https。
在 tomcat /conf/web.xml 中的 </welcome- file-list> 後面加上這
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<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>
4.重啓tomcat,現在你放問原來的地址,假設是http://localhost:8080/mywebapp/,可以看到,連接被重定向到了https的連接https://localhost:8443/mywebapp/。這樣,我們的目的達到了。
情況二配置方法:
1.將.jks後綴名的證書文件放到某一目錄下,此次假設是/usr/local/tomcat,證書文件爲www.test.com.jks,證書密碼爲test
2.打開conf目錄下的server.xml文件,找到以下這一段
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-->
它被註釋掉了,將註釋去掉,並將這一段改成以下
<Connector port="8888" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/local/tomcat/www.test.com.jks" keystorePass="test" /> 參考網址:
http://www.blogjava.net/jjshcc/archive/2013/06/20/400769.html
http://blog.sina.com.cn/s/blog_64a52f2a0101g35m.html