关于windows服务器下SSL方式的实现

每天坚持学习

关于windows服务器下SSL方式的实现

要真正学到一点东西,就要虚心。譬如一个碗,如果已经装得满满的,哪怕再有好吃的东西,象海参,鱼翅之类,也装不进去,如果碗是空的,就能装很多东西。——《雷锋日记》

一.需满足的服务器环境

服务器版本信息:[^注释1]
Windows Server 2008 R2 Enterprise
[^注释1]: 若服务器版本不同,以下升级方式可能会出错。

项目部署方式:[^注释2]
Windows: Apache2.4.46 + Tomcat9.0
[^注释2]:由于无域名, 暂时不考虑Apahce升级。

注:基本的项目部署环境不再赘述!与大多是部署项目都是一致的。(若有问题可以私信)暂不考虑LInux服务器

二.如何进行加密升级?

前置条件: 从JDK中找到keytool.exe,随便复制到一个方便的目录,在命令行中进入这个目录。

**1.为服务器生成证书 tomcat.keystore,命令中如果是IP方式访问用-ext SAN=ip:xxxxx,如果是域名用-ext SAN=dns:
xxxxx,注意“您的名字与姓氏是什么?”就是你的IP或域名,其他的看着写。(xxxxx根据实际情况自行设置)


关于windows服务器下SSL方式的实现

2.为客户端生成证书,双向认证时需要客户端安装该证书,等待第四步成功后将该证书添加到“个人”。


关于windows服务器下SSL方式的实现
3.将p12文件导出为一个cer文件,因为不能直接将PKCS12格式的证书库导入服务端证书(tomcat.keystore)。XXXX为密码,请自行设置


关于windows服务器下SSL方式的实现

4.让服务器信任客户端证书


关于windows服务器下SSL方式的实现

5.查看服务器的证书库。(一个是服务器证书,一个是受信任的客户端证书),可以省略。


关于windows服务器下SSL方式的实现

6.把服务器证书导出为cer文件,然后将该证书添加到“受信任的根证书颁发机构”区域。


关于windows服务器下SSL方式的实现

以上步骤完成之后,在tomcat的server.xml中配置如下内容(默认端口是443,根据实际情况自行配置

单向认证时需将clientAuth=“false”,双向认证设置为clientAuth=“true”)—根据实际情况自行设置如下:


关于windows服务器下SSL方式的实现

三.添加生成的文件到对应的位置

(1)将 server.cer 导入到浏览器“受信任的根证书颁发机构”区域,这样是为了让浏览器信任服务器。
(2)将 client.p12 导入到浏览器“个人”区域,这样是为了让服务器信任浏览器,访问时会提示选择这个证书。-------该方式根据实际情况自行选择。

四.特别要理解(注意)的点

protocol由之前的HTTP/1.1改成了org.apache.coyote.http11.
Http11Protocol。

可能会疑惑HTTP/1.1与org.apache.coyote.http11.Http11
Protocol到底有什么区别?为什么要这样设置呢?


①. 在 HTTP/1.1 中,所有的连接默认都是持久连接,但在 HTTP/1.0 内并未标准化。虽然有一部分服务器通过非标准的手段实现了持久连接,但服务器端不一定能够支持持久连接
②. 上述…Http11Protocol这个类其实就org.apache.coyote.
http11.Http11BaseProtocol这个包;这个包支持http1.1协议,内部分为三类:ARP、NIO、普通http;在开发过程中根据实际情况选择不同的类!(处理机制更灵活,更搞效----------------------更适合研发人员来探究这个包的机制

五.总结

注:
①.后期会涉及到Linux服务器的SSL问题总结,也会与大 家一并分享。
②.对于Apache的SSL问题可以关注我!下期会进行详细阐述。

以上过程是根据实际生产环境,自行总结的!若有问题:欢迎童鞋私信或评论!特别希望能够与大家一起交流,共同进步!