互联网的加密原理

加密主要有两种方式:对称加密和非对称加密。web

对称加密

对称加密:采用单钥密码系统的加密方法,同一个密钥能够同时做为信息的加密和解密,这种方式也叫作单密钥加密。所谓的对称,就是采用这种加密方式的双方使用一样的密钥进行加密和解密。 
密钥是控制加密和解密过程的指令,算法是一组规则,规定了如何进行加密解密。 
加密的安全性不只取决于加密算法自己,更在于密钥管理的安全性。 
因为对称加密速度快,因此一般用在消息发送方须要加密大量数据时使用。可是由于加密和解密都使用同一个密钥,如何把密钥安全的传递到解密者手上就成了必需要解决的问题。 
经常使用的对称加密有: DES, IDEA, RC2, RC4, SKIPJACK, RC5, AEC算法等。
算法

非对称加密

非对称加密算法须要两个密钥:公钥和私钥 
公钥和私钥是一对,若是用公钥加密,只能用对应的私钥才能解密;若是用私钥加密,那么只能用对应的公钥解密。因为加密和解密使用的是两个不一样的密钥,因此叫这种加密算法叫作非对称加密算法。 
工做原理: 
1. A向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥; 
2. A的私钥保密,把公钥给B;B的私钥保密,把公钥给A; 
3. A发消息给B,A用B的公钥加密信息,而后将信息发给B; 
4. B收到信息后,用本身的私钥解密。 
也就是说,发送方用接收方的公钥加密,接收方用本身的私钥解密,这样信息就能够安全无误的到达了。可是依然存在如下问题: 
1.A想发数据给B,那么B先生成一对密钥,而后将本身的公钥发给A。可是在发公钥的过程当中极可能被第三方C截获。C截获B的公钥以后可能会作几件事: 
(1)使用B的公钥对数据加密而后发给B,B此时没法分清这个消息是A发的仍是C发的 
(2)C本身生成一对密钥,将公钥发给A,A收到公钥觉得是B发的,用这个公钥加密以后发消息给B,发给B的过程当中被C拦截,C有私钥,能够知道消息的内容。 
那么这些问题该如何解决呢? 
只能靠一个第三方机构(CA机构,即证书受权机构)来担保。 
此时的流程就是: 
1. A要向B发送数据,B首先将公钥发给CA机构,CA机构收到B的公钥以后向B确认这个是不是B发送的公钥; 
2. CA机构确认是B发送的公钥以后就会为B担保,生成一份数字证书给B,数字证书包含了CA的担保认证签名和B的公钥,A拿到CA的数字证书后,看到上面有CA的签名,就能够肯定当前拿到的公钥是B发的,这样就能够放心的使用公钥加密数据而后发给B了
apache

Tomcat服务器与加密解密

Tomcat服务器启动时会启动多个Connector(链接器),而Tomcat服务器的链接器又能够分为加密链接器和非加密链接器。在server.xml中有配置Connector:浏览器

<Connector port="8080" protocol="HTTP/1.1"
                connectionTimeout="20000"
                redirectPort="8443" />

8080这个端口对应的链接器就是没有加密的Connector,在请求资源时咱们的请求也是不加密的。要是想要以加密的方式来访问Tomcat服务器,就须要在Tomcat里配置一个加密的Connector。 
浏览器与服务器交互时,浏览器想要将数据加密以后再发送给服务器,该怎么作呢? 
首先,服务器要先向浏览器出示一份数字证书,浏览器看到数字证书以后,就可使用数字证书里的公钥加密数据。所以得针对服务器生成一份数字证书。而后再配置一下服务器,让服务器收到浏览器的请求后,向浏览器出示它的数字证书。 
生成Tomcat服务器的数字证书 
sun公司提供了制做证书的工具keytool,在JDK1.4之后版本中都包含了这个工具,它在JAVA_HOME\bin\keytool.exe。使用keytool生成一个名为tomcat的证书,放在.keystore这个密钥库中。
tomcat

keytool -genkey -alias tomcat -keyalg RSA

Capture17.PNG-19.6kB

命令执行完以后,操做系统的用户文件夹下就会生成.keystore文件,如图: 
Capture18.PNG-14.4kB 
可使用指令查看.keystore密钥库里面的全部证书
安全

keytool -list -keystore .keystore

Capture19.PNG-6.3kB

 

配置HTTP链接器 
将生成的.keystore密钥库文件拷贝到Tomcat服务器的conf目录下,以下图所示: 
Capture20.PNG-17.4kB 
修改server.xml文件,配置HTTP链接器:
服务器

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="conf/.keystore" keystorePass="123456"/>

配置了一个端口是8443的加密链接器,浏览器访问8443端口的链接器时,将会以加密的方式访问web服务器,这个链接器收到浏览器的请求后,将会向浏览器出示一份数字证书,浏览器再用数字证书里的公钥来加密数据。服务器从密钥库中提取证书时须要密码,keystorePass这个属性就是指明了密码。 
使用"https://localhost:8443/"访问8443的加密链接器 
Capture21.PNG-70.9kB
工具

 因为密钥库里的证书时咱们本身生成的,并无通过CA认证,因此在访问的时候,浏览器会出现"证书错误,导航已阻止"这种状况,浏览器会认为当前要访问的这个主机是不安全的,不推荐访问,点击"继续浏览此网站"便可。 
Capture22.PNG-104.3kB
网站

 安装数字证书   
为了让浏览器信任咱们生成的数字证书,须要将数字证书安装到浏览器中,以IE8为例来安装证书,过程以下: 
Capture23.PNG-121kB
Capture24.PNG-188.1kB   
Capture25.PNG-61.9kB   
证书安装成功后,重启IE浏览器,使用"https://localhost:8443/"访问8443的加密链接器,此时浏览器就再也不提示证书错误了。
加密

 删除数字证书 
工具----->Internet选项 
Capture27.PNG-142.9kB
删除后重启浏览器便可。  

相关文章
相关标签/搜索