关于http与https的区别,请自行百度.本博客只演示如果让tomcat支持https访问。
注:本次使用的tomcat版本为:apache-tomcat-7.0.57
导出证书
首先在本地配置好jdk的环境变量,打开命令行工具,执行如下代码:
keytool -genkeypair -keyalg RSA -keysize 1024 -sigalg MD5withRSA -validity 365 -alias www.zyz.com -keystore d:/zyz.keystore
参数说明
keyalg : key的加密算法 RSA
keysize : key的长度
sigalg :签名算法 MD5withRSA
validity :有效期
alias :域名
keystore :证书的保存路径
修改tomcat配置
打开tomcat –>conf–>server.xml 文件,修改如下两处
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="d:/zyz.keystore"
keystorePass="zyz123"
/>
在79行左右位置,打开79-86行对https 协议的注释,添加证书的位置及密码,并且将端口改为https默认的443.
设置http路由
做完上述两步后,可以使用https访问自己的工程,发现工程还是可以用http协议进行访问。接着修改…..
继续修改tomcat的server.xml配置文件,在http配置中做如下配置:
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="443"/>
将tomcat的默认端口8080 改为80
redirectPort="443" :表示当使用http协议访问80端口时,会路由到443端口
修改web工程的web.xml 文件,加入如下代码,设置整站使用ssl协议:
<security-constraint>
<display-name>Test Auth</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/*</url-pattern> <!-- 整站SSL -->
<http-method>DELETE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<user-data-constraint>
<description>SSL required</description>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
大功告成,完成如上配置后,我们便可以启动tomcat,进行网址访问。
在地址栏输入localhost/student/login.jsp后,tomcat自动路由到https端口。
由于我们的证书没有经过认证,所以,会出现如下问题。点击高级–>继续访问
最后,我们的https 访问的界面出现了!!!
参考文献
《大型分布式网站架构设计与实践》
网络博客