单点登录(四):HTTPS相关知识

来源:互联网 发布:131458查询淘宝账号 编辑:程序博客网 时间:2024/04/30 16:07
一.什么是HTTPS
二.HTTPS和HTTP的区别
三.HTTPS解决的问题
四.为什么HTTPS没有被普及
五.Tomcat中配置Https连接

一.什么是HTTPS
是以安全为目标的HTTP通道,简单讲是HTTP的安全版。目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了。

二.HTTPS和HTTP的区别
1.https协议需要到ca申请证书,一般免费证书很少,需要交费。
2.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
3.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4.http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。1. 一般意义上的https,就是服务器有一个证书。

三.HTTPS解决的问题
1.信任主机的问题
采用https的服务器必须从CA (Certificate Authority)申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。所以所有的银行系统网站,关键部分应用都是https 的。客户通过信任该证书,从而信任了该主机。其实这样做效率很低,但是银行更侧重安全。这一点对局域网对内提供服务处的服务器没有任何意义。局域网中的服务器,采用的证书不管是自己发布的还是从公众的地方发布的,其客户端都是自己人,所以该局域网中的客户端也就肯定信任该服务器。

2.通讯过程中的数据的泄密和被篡改
        1.一般意义上的https,就是服务器有一个证书。
              a) 主要目的是保证服务器就是他声称的服务器,这个跟第一点一样。
              b)服务端和客户端之间的所有通讯,都是加密的。
                       i. 具体讲,是客户端产生一个对称密钥,通过服务器的证书来交换密钥,即一般意义上的握手过程。
                       ii. 接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。
         2.少许对客户端有要求的情况下,会要求客户端也必须有一个证书。
               a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA 认证过的身份。因为个人证书一般来说是别人无法模拟的,所有这样能够更深的确认自己的身份。
               b) 目前大多数个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体。


四.为什么HTTPS没有被普及
HTTPS意味着连接是安全的,但为什么主要是网上银行等服务使用HTTPS加密连接,互联网不全面应用HTTPS?
真正的问题是HTTPS增加了响应时间,失去了缓存能力。如果服务器和客户端在同一地区,这不是问题,但如果是间隔天南地北,用户肯定希望能有缓存加快访问。此外,SSL初始密钥交换也会增加延迟。另一个问题是虚拟主机不支持HTTPS,廉价的虚拟主机供应商让多个网站使用相同的IP地址,这种方式能在HTTP下工作,但不能用于HTTPS,一种解决方法是TLS Extensions协议,但还不成熟。未来随着宽带速度的增加,服务器对安全连接的优化,网民对安全而不是速度的关注将会推动HTTPS的部署。
五.Tomcat中配置Https连接
1.首先需要配置jdk,不然tomcat无法启动。
2.其次按照教程生成证书,导入jdk。http://www.linuxidc.com/Linux/2014-02/96446.htm
   2.1 使用 JDK 的 keytool 命令生成密钥库(keystore)

   keytool -genkeypair -alias cas -keyalg RSA -storepass changeit

   查看 keypair:keytool -list -storepass changeit
   删除 keypair:keytool -delete -alias <别名> -storepass changeit

   2.2从 keystore 中导出证书

   keytool -exportcert -alias cas -file cas.crt -storepass changeit


   2.3 导入证书到 JVM 中

   keytool -importcert -alias cas -file cas.crt -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -noprompt

3.打开 Tomcat 的 conf/server.xml 文件。
开打https,也就是8443端口,并且配置keystoreFile="g:/sso/ssodemo.keystore" keystorePass="michaelpwd",告诉JDK从哪里生成证书。
4.注销/重启即可。

注意:
服务器生成的证书给给用户,用户可能不知道这个证书,或者说这个证书太低级了,所以需要在上面把证书导入到JDK。
之前出过错误,因为Web应用没有用这个JDK,而用其他的JDK,其他的JDK又没有先导入这个证书,所以导致出错。
总之:记得用同一个JDK。
0 0