1、生成keystore文件
keytool -v -genkey -alias tomcat -keyalg RSA -keystore /home/test/my.keystore
在生成keystore的过程中,要输入一些站点信息和密码,并要求再次核对密码
2、编辑tomcat/conf/server.xml
找到对应的connector,取消注释,并且写入keystore文件路径和密码
1 2 3 4 5 |
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/home/test/my.keystore" keystorePass="123456"/> |
3、强制HTTP转HTTPS 对工程的web.xml进行修改,加入:
1 2 3 4 5 6 7 8 9 |
<security-constraint> <web-resource-collection> <web-resource-name>OPENSSL</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> |
4、禁用不安全的http方法 在tomcat/conf/web.xml最后加上一个节点
1 2 3 4 5 6 7 8 9 10 11 |
<security-constraint> <web-resource-collection> <url-pattern>/*</url-pattern> <http-method>PUT</http-method> <http-method>DELETE</http-method> <http-method>HEAD</http-method> <http-method>OPTIONS</http-method> <http-method>TRACE</http-method> </web-resource-collection> <auth-constraint></auth-constraint> </security-constraint> |
注:经测试第3和第4可合并为:
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection>
<web-resource-name>OPENSSL</web-resource-name>
<url-pattern>/*</url-pattern>
<!--禁用HTTP的不安全方法-->
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
<http-method>OPTIONS</http-method>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint></auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
---------------------------------------------------------------------------------------
https如何进行加密传输
客户端是没有证书的,也就没有公钥和私钥。
SSL握手阶段,服务器把证书传输给客户端,同时也就传输了公钥(公钥是证书的一部分)。
由客户端来对这个证书进行有效性认可,再由这个客户端来生成对称密钥。
对称密钥用服务器证书中的公钥加密后,传回给服务器。只有服务器才能解密这个信息,也就只有服务器才知道你的对称密钥。
只要这个SSL连接没有关闭,后续的所有数据,无论是客户端发出的还是服务器发出的,均会使用这个对称密钥加密。
对称加密算法中,依赖的是密钥的保密性,只要密钥没有被泄露,对称加密的结果被截获也没有什么意义。而密钥是用公钥加密的,只能由服务器解开。
===================================
所以在SSL连接没有建立的时候,服务器给客户端发的可以被截获的数据仅有证书,没有其他的数据。其他的数据都要等SSL连接建立之后加密传输。
所以https的证书加密还是安全的,在没有私钥的情况下不存在泄露的可能。
相关推荐
对于Java Web应用,如果使用的是Tomcat、Jetty等服务器,还需要将生成的证书导入到Java Keystore(JKS)中,并更新服务器的SSL配置。这个过程可能涉及到`keytool`命令行工具的使用,以及修改`server.xml`配置文件。 ...
JSP通过request对象读取客户端请求,session和cookie用于管理用户会话。JSP的errorPage指定错误页面,JavaBeans在JSP中提供数据封装。 【J2EE相关知识】 J2EE(Java Platform, Enterprise Edition)是企业级开发...
- XML用于数据交换和配置,也可作为数据存储。 - 分页和效率考虑涉及数据库查询优化、缓存策略等。 - Structs是Java的一个MVC框架,Struts的工作流程涉及Action、Form、DispatcherServlet等组件。 这些面试题...
使用String的getBytes()和new String(byte[], charset)方法进行编码转换,例如将GB2312转为ISO-8859-1。 【访问数据库】 Statement用于执行静态SQL,PreparedStatement用于预编译SQL,能防止SQL注入,提高性能。 ...
python学习资源
jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目
基于Andorid的音乐播放器项目设计(国外开源)实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
python学习资源
python学习资源
python学习一些项目和资源
【毕业设计】java-springboot+vue家具销售平台实现源码(完整前后端+mysql+说明文档+LunW).zip
HTML+CSS+JavaScarip开发的前端网页源代码
python学习资源
【毕业设计】java-springboot-vue健身房信息管理系统源码(完整前后端+mysql+说明文档+LunW).zip
成绩管理系统C/Go。大学生期末小作业,指针实现,C语言版本(ANSI C)和Go语言版本
1_基于大数据的智能菜品个性化推荐与点餐系统的设计与实现.docx
【毕业设计】java-springboot-vue交流互动平台实现源码(完整前后端+mysql+说明文档+LunW).zip
内容概要:本文主要探讨了在高并发情况下如何设计并优化火车票秒杀系统,确保系统的高性能与稳定性。通过对比分析三种库存管理模式(下单减库存、支付减库存、预扣库存),强调了预扣库存结合本地缓存及远程Redis统一库存的优势,同时介绍了如何利用Nginx的加权轮询策略、MQ消息队列异步处理等方式降低系统压力,保障交易完整性和数据一致性,防止超卖现象。 适用人群:具有一定互联网应用开发经验的研发人员和技术管理人员。 使用场景及目标:适用于电商、票务等行业需要处理大量瞬时并发请求的业务场景。其目标在于通过合理的架构规划,实现在高峰期保持平台的稳定运行,保证用户体验的同时最大化销售额。 其他说明:文中提及的技术细节如Epoll I/O多路复用模型以及分布式系统中的容错措施等内容,对于深入理解大规模并发系统的构建有着重要指导意义。
基于 OpenCV 和 PyTorch 的深度车牌识别
【毕业设计-java】springboot-vue教学资料管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip