javaWeb https连接器
来源:互联网 发布:mac版剪辑视频软件 编辑:程序博客网 时间:2024/05/16 16:11
互联网加密原理
tomcat服务器启动时候会启动多个Connector(连接器),而Tomcat服务器的连接器又分为加密连接器和非加密连接器 。(一般我们使用http协议的是非加密,https的是加密的)
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
上面的这个Connector 就是非加密的。如果要使用加密的链接,则需要新增Connector 。
对称加密
非对称加密
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
公开密钥与私有密钥是一对,如果用公开密钥 对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密 钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行 加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙 方再用自己的私匙对数据进行验签。
非对称加密工作原理
发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样,信息就可以安全无误地到达目的地了,即使被第三方截获,由于没有相应的私钥,也无法进行解密。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密。
非对称性加密依然没有解决数据传输的安全性问题,比如A想向B发数据,B首先生成一对密钥(公钥和私钥),然后将公钥发给A,A拿到B发给他的 公钥有就可以使用公钥加密数据后发给B,然而在B公钥发送给A的这个过程中,很有可能会被第三方C截获,C截获到B的公钥后,也使用B的公钥加密数据,然 后发给B,B接收到数据后就晕了,因为搞不清楚接收到的数据到底是A发的还是C发的,这是其中一个问题,另一个问题就是,C截获到B发的公钥后,C可以自 己生成一对密钥(公钥和私钥),然后发给A,A拿到公钥后就以为是B发给他的,然后就使用公钥加密数据发给B,发送给B的过程中被C截获下来,由于A是用 C发给他的公钥加密数据的,而C有私钥,因此就可以解密A加密过后的内容了,而B接收到A发给他的数据后反而解不开了,因为数据是用C的公钥加密的,B没 有C的私钥,所以就无法解密。
所以,非对称性加密存在一个问题:A想向B发数据,A如何确定拿到的公钥一定是B发的呢?那么如何解决这个问题呢?只能靠一个第三方机构(CA机构,即证书授权中心(Certificate Authority ),或称证书授权机构)来担保。A想向B发数据,B首先将公钥发给CA 机构,CA机构拿到B的公钥后跑到B的家里问:这是你发的公钥吗?B确认过后说是:没错,是我发的!那么此时CA机构就会为B的公钥做担保,生成一份数字 证书给B,数字证书包含了CA的担保认证签名和B的公钥,B拿到CA的这份数字证书后,就发给A,A拿到数字证书后,看到上面有CA的签名,就可以确定当 前拿到的公钥是B发的,那么就可以放心大胆地使用公钥加密数据,然后发给B了。
HTTPS连接器
浏览器想将数据加密后再发送给服务器,那么该怎么做呢?服务器首先要向浏览器出示一份数 字证书,浏览器看到数字证书后,就可以使用数字证书里面的公钥加密数据,所以要想做浏览器和服务器的加密数据传输,那么首先得针对服务器生成一份数字证 书。然后再配置一下服务器,让服务器收到浏览器的请求之后,会向浏览器出示它的数字证书。
java有个制作证书的工具keytool, 在JDK 1.4以后的版本中都包含了这一工具,它的位置为<JAVA_HOME>\bin\keytool.exe
可以cmd打开输入框输入:
回车后:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" keystoreFile="d:/tomcat.keystore" keystorePass="123456" sslProtocol="TLS"/>
保存并关闭,重新启动tomcat,在浏览器 输入“https://127.0.0.1:8443/”后,
也就是我们已经设置成功了。
此时允许访问:
上述命令相关内容介绍
keytool -genkey:自动使用默认的算法生成公钥和私钥
-alias[名称]:给证书取个别名
-keyalg:制定密钥的算法,如果需要制定密钥的长度,可以再加上keysize参数,密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍
-keystore:参数可以指定密钥库的名称。密钥库其实是存放迷药和证书文件,密钥库对应的文件如果不存在会自动创建。
-validity:证书的有效日期,默认是90天
-keypass changeit:不添加证书密码
-storepass changeit:不添加存储证书的密码
- javaWeb https连接器
- 【javaWeb第五天】-密码学基础和tomcat的https连接器
- https连接器
- javaweb-day04-5(javaWeb开发入门 - tomcat体系架构、配置https加密连接器)
- javaweb总结(3) - 互联网上的加密和https连接器
- Tomcat中配置https连接器
- 日常小结-配置https连接器
- 配置https连接器与Tomcat管理平台
- 配置https连接器,软件密码学基础
- 连接器
- java(13)--配置https加密连接器并生成数字证书
- 软件密码学基础和配置tomcat的https连接器
- 软件密码学基础和配置tomcat的https连接器
- 非对称型加密和配置tomcat的https连接器
- javaWeb 项目Http转Https
- JavaWeb项目 实现https会话
- https知识了解与javaweb中如何使用https
- https知识了解与javaweb中如何使用https
- 栈(经典应用逆波兰表达式)
- JDK环境变量配置说明
- Dubbo系列(五)Dubbo之监控中心Monitor
- ubuntu14.04 qt 编译程序报错cannot find -lGL
- 阿里云服务器如何设置IPV6通过appstore的审核
- javaWeb https连接器
- JAVA学习路线图
- UE4 局域网斗地主(一)
- Git常用命令(创建分支-关联分支-提交-合并等操作)
- java ==和equals的区别
- HDFS 架构简述
- Appium中xpath的使用
- 『ORACLE』DG搭建时备库的db_name报错(11g)
- Linux用户必看:29个必须掌握的常用命令