软件领域的加密原理
配置tomcat的https连接器,即配置加密连接器。若要如此,就不得不了解一下软件领域里的加密原理。
- 对称加密模型,如图:
这种加解密的模型——对称加密,会有一个极大的漏洞,即a怎么将密钥告诉给b?答案是根本就没有安全途径!!! - 非对称加密模型
案例,蒋介石给宋美龄写信。
注意:公钥加密的数据只能由私钥来解,私钥加密的数据只能由公钥来解。
此时会产生一个新的问题:宋美龄将公钥传递给蒋介石的过程中,我将其截获下来,然后我自己通过非对称加密算法生成一对密钥——私钥和公钥,接着将我的公钥传递给蒋介石,蒋介石获取到我的公钥,对信进行加密,将信发送给宋美龄,我又拦截到,用我的私钥对信进行解密即可,即使信发送给宋美龄,也无法通过其私钥来解密。
总结:当蒋给宋写信时,首先获取到宋的公钥,但是要怎么确保公钥是宋的呢?
解决办法,如图:
此时又会产生一个新的问题:我可以将宋传给蒋的数字证书拦截下来,然后加密一段数据,发送给宋(如果蒋将信发给宋,就截下来),宋解密我发给其的数据。
总结:蒋用宋的数字证书对信进行加密发送给宋,宋收到信,宋要判断信是蒋发的,还是我发的?
解决办法,如图:
数据摘要即数据指纹,每一段数据都有一个指纹,如同每个人都有一个唯一的指纹一样,数据指纹是通过MD5算法算得。
配置tomcat的https连接器
首先为网站生成一份数字证书,使用的命令是:keytool -genkey -alias tomcat -keyalg RSA
(这句命令的意思是使用keytool生成一个名字为tomcat的证书,存放在.keystore这个密钥库中),然后再在服务器中配置加密的连接器。一访问此加密连接器,网站即向你出示一份数字证书,然后浏览器安装这份数字证书,相当于安装此网站的公钥。
数字证书——系统会使用密钥库(keystore)来保存。
为网站生成一份数字证书(配置密钥库)
如下图:
此时生成的密钥库.keystore
默认存放在C:\Users\wang sheng
目录下。
使用命令:keytool -list -keystore .keystore
可查看.keystore
密钥库里面的所有证书:
在服务器中配置加密的连接器
将密钥库剪切,存放在Tomcat服务器下的conf目录下,在server.xml配置加密连接器。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="conf/.keystore" keystorePass="123456" />
- 1
- 2
- 3
keystoreFile
:密钥库存放的位置。 keystorePass
:密钥库访问的口令(密码)。
提示:配置Connector连接器可参考tomcat文档。
测试
在客户端安装服务器证书
- 进入服务器端口8443,但是没有CA认证的数字证书。
- 点击
继续浏览此网站
,出现如下界面。 - 点击
证书错误
,出现如下界面。 - 点击
查看证书
,出现如下界面。 点击
安装证书
,出现如下界面。以上步骤即是在客户端安装了一份数字证书,并信任该数字证书。
再次启用浏览器进行访问,以加密的方式与服务器进行交互,应该会出现如下界面:
此时又会产生一个问题:当浏览器被劫持,所有的不安全证书被允许安装时就又出现不安全状况。
检查安装结果
步骤如图所示:
注意:此文配置的只是单向加密连接器。实际开发中应配置https双向加密连接器