加密主要有两种方式:对称加密和非对称加密。
对称加密
常用的对称加密有: DES, IDEA, RC2, RC4, SKIPJACK, RC5, AEC算法等。
非对称加密
2. CA机构确认是B发送的公钥之后就会为B担保,生成一份数字证书给B,数字证书包含了CA的担保认证签名和B的公钥,A拿到CA的数字证书后,看到上面有CA的签名,就可以确定当前拿到的公钥是B发的,这样就可以放心的使用公钥加密数据然后发给B了
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这个密钥库中。
keytool -genkey -alias tomcat -keyalg RSA
可以使用指令查看.keystore密钥库里面的所有证书
keytool -list -keystore .keystore
修改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的加密连接器
由于密钥库里的证书时我们自己生成的,并没有经过CA认证,所以在访问的时候,浏览器会出现"证书错误,导航已阻止"这种情况,浏览器会认为当前要访问的这个主机是不安全的,不推荐访问,点击"继续浏览此网站"即可。
安装数字证书
为了让浏览器信任我们生成的数字证书,需要将数字证书安装到浏览器中,以IE8为例来安装证书,过程如下:
证书安装成功后,重启IE浏览器,使用"https://localhost:8443/"访问8443的加密连接器,此时浏览器就不再提示证书错误了。
删除数字证书
工具----->Internet选项
删除后重启浏览器即可。