《网络(二):简单易懂的https双向认证自制安全证书和tomcat配置》

网络(一):简单易懂的Https工作原理

网络(二):简单易懂的https双向认证自制安全证书和tomcat配置

网络(三):简单易懂的Android平台Okhttp/Retrofit https证书配置

1、环境

电脑环境配置%JAVA_HOME%/bin/keytool.exe(jdk下一个工具)
windwos10
tomcat 7.0
IE 11

2、何为证书

以下两张截图是浏览器查看证书的信息,它包含了各种信息。

image.png

image.png

下面将列出几个后相关缀名的证书和它的简单介绍
keystore:
jks:数字证书库。
p12:是PKCS12的缩写。同样是一个存储私钥的证书库,由.jks文件导出的,用户在PC平台安装,用于标示用户的身份。
cer:俗称数字证书,目的就是用于存储公钥证书,任何人都可以获取这个文件 。
bks:由于Android平台不识别.keystore和.jks格式的证书库文件,因此Android平台引入一种的证书库格式,BKS。

注:证书之间的转换可以用工具portecle来进行转换;在https中证书扮演者重要角色,它保证颁发机构、有效期、加密密钥、加密算法等信息。

3、要生成的证书

1)https双向认证:即客户需要对服务器端身份进行认证,服务器端也需要对客户端身份进行认证

2)为客户端和服务器生成key,然后由key导出各自的证书

下面就开始生成个key和导出对应的证书,每一个步骤出命令和执行的截图。

为服务端生成keystore

keytool -genkeypair -alias server -keyalg RSA -validity 3650  -keystore  F:\server.keystore
image.png

导出服务器证书

keytool -export -alias server -file F:\server.cer -keystore F:\server.keystore 
image.png
image.png

生成客户端key

keytool -genkeypair -alias client -keyalg RSA -validity 3650 -keystore F:\client.jks
image.png

导出客户端证书

keytool -export -alias client -file F:\client.cer -keystore F:\client.jks 
image.png

3)证书交换
证书互换的原因:只有你中有我、我中有你,在双向认证时,我们才彼此认识,这个步骤非常重要!!!

将服务端的证书保存到 publickeys.jks中给客户端用识别服务端时用

keytool -import -v -alias server -file F:\server.cer -keystore F:\publickeys.jks
image.png

将客户端的证书保存到服务端的key中,给服务端识别客户端时用


image.png

你也可以通过list命令查看服务器的证书库,可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书


image.png

至此,我们为客户端可服务端生成了密钥,以及导出各自的证书,并且为客户端的密钥和服务端的密钥导入了对方的证书(双向认证时用),接下来就要开始配置tomcat服务器了。

tomcat配置

1)首先把上述生成好的服务端密钥放到tomcat的conf目录下,并修改server.xml文件配置,配置代码如下:

  //其他配置省略...
   

    
                
    
    

http的默认端口是80,https的默认端口是443,不这样配置会访问不到服务器。

2)修改web.xml文件配置,在最末尾添加如下配置,代码如下,让http发起得请求交给https处理。

      
          
                  
            SSL          
            /*      
              
                  
            CONFIDENTIAL      
        
    

这样tomcat的配置就好了,非常简单,重启服务器即可

浏览器访问https

IE浏览器


image.png
image.png

接下来就需要为PC端导入相关的证书了,由于PC浏览器中存储的密钥的正式格式为p12,所以还需要把客户端的证书jks格式转为p12,证书的转换可以使用portecle工具(具体使用的百度一下就会很对资料了);客户端需要导入两个证书,一个是存储自己密钥的key,一个是服务端为客户端提供的公钥证书,用与客户对服务端的身份进行识别,证书的导入每一个过程都有截图,导入后重启服务器即可。

1)安装客户端证书

image.png

image.png

image.png
image.png

2)安装服务端证书

image.png
image.png
image.png
image.png

最后请求服务器返回结果


image.png

你可能感兴趣的:(《网络(二):简单易懂的https双向认证自制安全证书和tomcat配置》)