全面讲解Tomcat下SSL证书的配置(一)

来源:互联网 发布:电脑图片编辑软件 编辑:程序博客网 时间:2024/04/30 13:13

前言:本篇文章将从SSL/TLS产生的背景、数字证书原理、SSL证书的构成、使用keytool 管理证书、使用openssl管理证书、Tomcat下具体的配置,来全面的讲解Tomcat下SSL证书的配置。

SSL产生的背景

Tomcat是笔者用过的一款十分好用的开源的服务器中间件,性能稳定,扩展性好。对于一般性的大中企业的业务系统,使用Tomcat作为中间件在架构合理的情况下也是毫无压力的。
鉴于对信息安全的重视,越来越多的企业选择将业务系统、门户网站的站点升级为传输安全的SSL站点。简单的说就是 原来是直接使用http协议直接在公网传输,这是在公网上传输的http包实际上明文包,一旦被截获通过直接对数据进行解码即可恢复数据,并可对传输的数据进行修改后再发送出去,这显然是十分不安全的。为了保证传输数据的安全性(不易被非法人员截获读取)、完整性(不易被篡改)、不可否认性,安全套接字协议SSL变应用而生,这种协议从SSL1.0逐渐发展到 SSL2.0、SSL3.0、TLS1.0、TLS1.1、TLS1.2。
在一般的单向认证站点中,在用户实际访问的过程中,只是看到浏览器地址栏从http变成了带锁的https其他的并感受不到其他的什么变化,这一切都归功于PKI(Public Key Infrastructure)网络可信安全基础设施的发展。所以基于数字证书的传输协议结合http统称为https安全传输协议。

数字证书原理

要理解数字证书的原理必须先理解密码学中所述的各式算法。
对称式:对称式加密就是对源明文的加密和密文的解密使用同一个密钥。举个形象的例子来说,一把锁家里大门的锁,无论是开门还是锁门使用的都是同一把钥匙。在之前的电报加密技术可以理解为按照此方式进行,电台通信的双方约定好同一密码本及加密方式,接收方便可以按照约定好的加密方式从密码本种将信息翻译为真实的明文。这时的密码本就显得十分重要。因为私钥需要在通信双发保密,所以此类技术不适合单独用于开放型网络站点的传输加密。这类数据加密算法有 DES、3DES、RC2、RC4、IDEA、AES等。
非对称式:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”。这种密钥必须在数学上证明是成对出现的,即一个“公钥”对应着唯一的“私钥”。用“公钥”加密后的密文只能由“私钥”解密为明文,同样用“私钥”加密后的密文只能由“公钥”进行解密为明文。这类数据加密算法有 RSA、DSA等。比较适合用于开放性应用站点的安全通信,“公钥“是公开的,而”私钥“归服务器单方管理。
不可逆式算法:这类算法没有什么密钥,就是对明文加密生成的密文不能通过解密的方式恢复明文。主要用于生成数字摘要,达到一种签名保证数据完整性的作用。这类算法有MD5。绝大多数的应用系统的用户密码都是通过MD5加密后保存在数据库的。这样哪怕对于数据库管理员来说,密码都是保密的,只有用户自己知道密码,并且如果密码忘记要找回密码只能通过重置密码的方式。
下图描述便描述了一个安全传输的初级原型A
这里写图片描述
上图中:用户A与电子商务网站之间的传输使用非对称的算法进行加密,很好的保证了在传输过程中的与用户A正常通信的是发给他公钥的某电子商务网站、并且保证了传输过程是以安全的密文形式。
但问题是:用户A访问的网站真的是 用户A认为的狗狗开的电子商务网站么?可不可信?有没有方法判断?
比如说:该电子商务网站实际上是猫猫开的,却伪装成狗狗开的,用户也是无法判断出来的。如果有不法分子开一些网站伪装成正规的电子商务网站进行诈骗,也是不好避免的。尤其是在用户只是通过搜索引擎搜索出的访问网址进行访问,又不查看证书的详细信息的情况下。
这个时候PKI就登场了,中国的专家喜欢称PKI为可信计算机系统基础平台。它可以通过颁发证书验证证书的方式保证电子商务网站A就是是电子商务A开的电子商务网站A,从而使与用户通信的网站是可信的。当用户访问的站点是伪造的站点时,浏览器便会给出警告,提醒用户网站使用的证书与你真正要访问的站点不一致。
此时的安全传输原型图B为
这里写图片描述
1.PKI中的CA将CA ROOT证书(公钥)内置到用户的浏览器中
2.电子商务公司B向PKI中的某一CA提交证明材料及证书认证请求,申请对B的公司真实性及公钥进行认证。
3.PKI中的CA先使用非可逆算法对电子商务公司B的证书请求进行签名,然后在利用自己的私钥进行加密,生成证书颁发给电子商务公司B。
4.最终由电子商务公司合成服务器可用的SSL证书(一些CA机构也可在用户提供了私钥信息后,做到这一步)
5.用户B访问电子商务网站B得到了PKI的担保说,这个就是电子商务公司B的电子商务网站B,是可信的。

数字证书本身也是签名、加密的,CA会根据证书的公钥、证书所有者的信息、证书的有效期等属性和扩展属性,使用签名算法生成数字摘要,然后连同证书中的信息一同加密。客户端在收到证书时,由内置的ROOTCA进行解密证书,对解密后的证书信息采用同样的签名算法生成摘要,然后与原来的摘要信息比对。比对通过才能确认证书的安全性。

这个原型已经很接近实际中的SSL证书的认证及验证机制了,有一点在后面改进的在单向认证的环境中,只能保证服务器B是可信的,为了防止有人冒用客户端B对用户B与网站之间的通信进行干扰以及提高加密解密的效率。在客户端B与服务器B建立连接可信的连接之后,双方便约定一种对称加密算法进行通信信息的加密。

数字证书就是通过上述加密方式的结合来保证数据的安全性、完整性、不可否认性。

0 0
原创粉丝点击