使用tomcat和postman进行本地https测试
前言一些网络安全工具会影响软件的使用,如果公司有网管软件,可能会出现无法创建服务器,或无法通过localhost访问的情况,因此我通过虚拟机win7创建测试,系统只运行了杀毒软件。本文采用tomcat搭建https服务器,通过Postman测试https功能,所用软件均为安装版本,环境需要jdk,系统为win7 64位,具体版本如下:apache-tomcat-10.0.2Postman-8.0.
前言
一些网络安全工具会影响软件的使用,如果公司有网管软件,可能会出现无法创建服务器,或无法通过localhost访问的情况,因此我通过虚拟机win7创建测试,系统只运行了杀毒软件。
本文采用tomcat搭建https服务器,通过Postman测试https功能,所用软件均为安装版本,环境需要jdk,系统为win7 64位,具体版本如下:
apache-tomcat-10.0.2
Postman-8.0.4
jdk-15.0.2
全部安装完成后,进行jdk环境变量配置(如果tomcat是通过Tomcat10w.exe图形界面启动的,那么可以不用配置,一般它自己会去找到jdk,并完成配置,为避免麻烦,本文需要配置)
JRE_HOME:C:\Program Files\Java\jdk-15.0.2
JAVA_HOME:C:\Program Files\Java\jdk-15.0.2
CATALINA_HOME:C:\Program Files\Apache Software Foundation\Tomcat 10.0
环境变量 path 中增加:C:\Program Files\Java\jdk-15.0.2\bin
一、HTTPS单向认证
步骤比较简单:创建证书、搭服务器、客户端访问测试。
1、tomcat的证书创建、转换与服务器配置
1.1 证书生成
测试用的证书文件可以用 jdk 的 keytool 工具生成,有条件的可以去一些云服务商(腾讯云、阿里云都有)申请证书,具体命令如下:
#在要生成证书的目录下,通过cmd执行
keytool -genkey -alias tomcat -keyalg RSA -keystore .\cert.keystore
1.2 证书转换
jks:就是java keytool生成的证书库文件,包含证书和私钥。
p12:正常证书文件,也包含证书和私钥,比如服务器备份时就有采用这种格式。
转换参考《p12(PKCS12)和jks互相转换 - Beef Liu - 博客园https://www.cnblogs.com/got-my-way/p/6256306.html》
我已经有一个p12格式的ecc证书了,所以做个转换来用就好了,命令如下:
keytool -importkeystore -srckeystore test0121Ecc.p12 -destkeystore test0121Ecc.jks -deststoretype pkcs12
#密码123456
#当然p12也可以转成jks
keytool -importkeystore -srckeystore test0121Ecc.jks -destkeystore test0121Ecc1.p12 -deststoretype PKCS12
转好证书,修改tomcat服务器配置文件server.xml,增加一个Connector即可,原来的8080普通访问方式可以不用改。(下面是采用ecc加密的证书测试)
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
<!--
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443
This connector uses the NIO implementation. The default
SSLImplementation will depend on the presence of the APR/native
library and the useOpenSSL attribute of the
AprLifecycleListener.
Either JSSE or OpenSSL style configuration may be used regardless of
the SSLImplementation selected. JSSE style configuration is used below.
-->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
<!--以下新增的部分-->
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/test0121Ecc.jks"
certificateKeystorePassword="123456"
type="EC"/>
</SSLHostConfig>
</Connector>
<!--以上新增的部分-->
1.3 tomcat启动
有了证书以及配置了服务器配置,就可以启动服务器了,两种方法启动:
1、通过C:\Program Files\Apache Software Foundation\Tomcat 10.0\bin\Tomcat10w.exe
2、通过C:\Program Files\Apache Software Foundation\Tomcat 10.0\bin\startup.bat
第一种方式比较简单,图形界面,几乎就是一键操作,直接开启start按钮或stop暂停按钮就行。
第二种方式,建议修改这个脚本,在最后加个pause,以此来看启动过程会有什么问题。这种方式启动,会看到有一些乱码,如下所示,其实就是编码错误问题(看不顺眼就改,不改也影响不大),可以修改tomcat目录的conf子目录中一个名为 “logging.properties” 的文件,找到如下配置项并修改:
#java.util.logging.ConsoleHandler.encoding = UTF-8
java.util.logging.ConsoleHandler.encoding = GBK
乱码现象:
04-Feb-2021 19:10:19.201 淇℃伅 [main] org.apache.catalina.startup.HostConfig.deployDirectory 鎶妛eb 搴旂敤绋嬪簭閮ㄧ讲鍒扮洰褰?[C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\host-manager]
04-Feb-2021 19:10:19.251 淇℃伅 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web搴旂敤绋嬪簭鐩綍[C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\host-manager]鐨勯儴缃插凡鍦╗49]姣鍐呭畬鎴?
04-Feb-2021 19:10:19.251 淇℃伅 [main] org.apache.catalina.startup.HostConfig.deployDirectory 鎶妛eb 搴旂敤绋嬪簭閮ㄧ讲鍒扮洰褰?[C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\manager]
04-Feb-2021 19:10:19.292 淇℃伅 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web搴旂敤绋嬪簭鐩綍[C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\manager]鐨勯儴缃插凡鍦╗41]姣鍐呭畬鎴?
04-Feb-2021 19:10:19.293 淇℃伅 [main] org.apache.catalina.startup.HostConfig.deployDirectory 鎶妛eb 搴旂敤绋嬪簭閮ㄧ讲鍒扮洰褰?[C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\ROOT]
04-Feb-2021 19:10:19.326 淇℃伅 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web搴旂敤绋嬪簭鐩綍[C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\ROOT]鐨勯儴缃插凡鍦╗33]姣鍐呭畬鎴?
04-Feb-2021 19:10:19.342 淇℃伅 [main] org.apache.coyote.AbstractProtocol.start寮€濮嬪崗璁鐞嗗彞鏌刐"http-nio-8080"]
04-Feb-2021 19:10:19.372 淇℃伅 [main] org.apache.coyote.AbstractProtocol.start寮€濮嬪崗璁鐞嗗彞鏌刐"https-jsse-nio-443"]
04-Feb-2021 19:10:19.377 淇℃伅 [main] org.apache.catalina.startup.Catalina.start [1536]姣鍚庢湇鍔″櫒鍚姩
修复后
04-Feb-2021 20:06:02.982 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\host-manager]的部署已在[47]毫秒内完成
04-Feb-2021 20:06:02.998 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\manager]
04-Feb-2021 20:06:03.054 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\manager]的部署已在[56]毫秒内完成
04-Feb-2021 20:06:03.054 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\ROOT]
04-Feb-2021 20:06:03.086 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\ROOT]的部署已在[32]毫秒内完成
04-Feb-2021 20:06:03.101 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
04-Feb-2021 20:06:03.132 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["https-jsse-nio-443"]
04-Feb-2021 20:06:03.132 信息 [main] org.apache.catalina.startup.Catalina.start[1380]毫秒后服务器启动
2、Postman测试
通过 https://localhost,(默认端口即443)进行访问测试。也可以用浏览器访问测试。
2.1 测试可能出现的证书问题
通过GET访问时,返回:
Error: self signed certificate in certificate chain
设置里关闭SSL certificate verification
即可。
二、HTTPS双向认证(待整理)
更多推荐
所有评论(0)