11. 利用Tomcat服务器配置HTTPS双向认定

文章目录

  • Tomcat配置HTTPS
    • 1.为服务器生成证书
    • 2.为客户端生成证书
    • 3.让服务器信任客户端证书
    • 4.将该文件导入到服务器的证书库,添加为一个信任证书使用命令如下:
    • 5.查看证书库
    • 6.让客户端信任服务器证书
    • 7.配置tomcat
    • 8.验证

Tomcat配置HTTPS

1.启动cmd控制台,进入%JAVA_HOME%/bin目录# cd D:\java\jdk1.8.0_144\bin

image

1.为服务器生成证书

1.利用java的keyTool工具为tomcat生成证书,假定目标机器的域名为"localhost","keystore"文件存放在"D:\WorkSoftWare\java\tomcat\HTTPS\tomcat.keystore"下,口令为"password",使用如下命令# keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\WorkSoftWare\java\tomcat\HTTPS\tomcat.keystore -validity 36500
2.文件路径要事先创建好,在指定目录下会生成tomcat.keystore文件
3.转格式# keytool -importkeystore -srckeystore D:\WorkSoftWare\java\tomcat\HTTPS\tomcat.keystore -destkeystore D:\WorkSoftWare\java\tomcat\HTTPS\tomcat.keystore -deststoretype pkcs12  

image

2.为客户端生成证书

1.为浏览器生成证书,以便让服务器来验证它,为了将证书顺利导入IE和Firefox,证书格式应该是PKCS12,因此,使用如下命令生成# keytool -genkey -v -alias mykey -keyalg RSA -keystore D:\WorkSoftWare\java\tomcat\HTTPS\mykey.p12
2.mykey为自定义,对应证书存放子“D:\WorkSoftWare\java\tomcat\HTTPS\mykey.p12”目录下,客户端的CN可以是任意值,双击mykey.p12文件,即可将证书导入到客户端(浏览器)
3.转格式# keytool -importkeystore -srckeystore D:\WorkSoftWare\java\tomcat\HTTPS\mykey.p12 -destkeystore D:\WorkSoftWare\java\tomcat\HTTPS\mykey.p12 -deststoretype pkcs12

image

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

1.由于是双向SSL认证,服务器必须要信任客户端证书,因此,必须把客户端证书添加为服务器的信任认证,由于不能直接将PKCS12格式的证书库导入,必选先把客户端证书导出为一个单独的CER文件,使用如下命令:# keytool -export -alias mykey -keystore D:\WorkSoftWare\java\tomcat\HTTPS\mykey.p12 -storetype PKCS12 -storepass password -rfc -file D:\WorkSoftWare\java\tomcat\HTTPS\mykey.cer
2.mykey为自定义与客户端定义的mykey要一致,通过以上,客户端证书就被我们导出到D:\WorkSoftWare\java\tomcat\HTTPS\mykey.cer文件了

image

4.将该文件导入到服务器的证书库,添加为一个信任证书使用命令如下:

1.命令# keytool -import -v -file D:\WorkSoftWare\java\tomcat\HTTPS\mykey.cer -keystore D:\WorkSoftWare\java\tomcat\HTTPS\tomcat.keystore

image

5.查看证书库

1.通过list命令查看服务器的证书库,可以看到两个证书,一个是服务器证书,一个是受信任的客户端证书,# keytool -list -keystore  D:\WorkSoftWare\java\tomcat\HTTPS\tomcat.keystore

image

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

1.由于是双向SSL认证,客户端也要验证服务端证书。因此,必须把服务器证书添加到浏览器的“受信任的根证书颁发机构”,由于不能直接将keystore格式的证书库导入,必须先把服务器证书导出为一个单独的cer文件,使用如下命令# keytool -keystore D:\WorkSoftWare\java\tomcat\HTTPS\tomcat.keystore -export -alias tomcat -file D:\WorkSoftWare\java\tomcat\HTTPS\tomcat.cer 
2.通过以上命令,服务器证书被我们导出,到 D:\WorkSoftWare\java\tomcat\HTTPS\文件中,双击tomcat.cer。按照提示安装证书,将证书填入到“受信任的根证书颁发机构” 

7.配置tomcat

1.打开tomcat的conf/server.xml,在Connector附近添加<Connector port="8443"<!--使用Http11NioProtocol类 Tomcat提供了两个SSL实现,一个是JSSE实现,另一个是APR实现。Tomcat将自动选择使用哪个实现,即如果安装了APR则自动选择APR,否则选择JSSE。如果不希望让Tomcat自动选择,而是我们自己指定一个实现则可通过protocol定义,APR文件名为tcnative-1.dll。6.0里没这个dll文件,而7.0里有。换句话说,6.0默认使用JSSE实现,而7.0默认使用APR实现。弄明白缘由就好办了。由于习惯使用6.0的配置方式(即JSEE实现),因此只要把conf\server.xml里的protocol修改一下就行了-->protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" <!--开启ssl-->SSLEnabled="true" scheme="https" <!--安全的-->secure="true" <!--设置是否双向认证,默认是false,true代表双向认证-->clientAuth="true"<!--TLS认证-->sslProtocol="TLS" ciphers="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_RC4_128_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_RC4_128_MD5"<!--服务器证书文件路径--> keystoreFile="D:\WorkSoftWare\java\tomcat\HTTPS\tomcat.keystore"<!--服务器证书密码-->keystorePass="123456"<!--用来验证客户端证书的的根证书,此例子中就是服务器证书--> truststoreFile="D:\WorkSoftWare\java\tomcat\HTTPS\tomcat.keystore"<!--根证书密码-->truststorePass="123456"/>

8.验证

1.导入证书,在谷歌浏览器中搜索证书,找到管理证书,导入生成的mykey.p12文件

image

2.启动tomcat访问 https:localhost:8843
能看到以下结果即为成功

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DirectX12(D3D12)基础教程(二十二) ——HDR IBL 等距柱面环境光源加载和解算及 GS 一次性渲染到 CubeMap

前序文章目录 DirectX12&#xff08;D3D12&#xff09;基础教程&#xff08;一&#xff09;——基础教程 DirectX12&#xff08;D3D12&#xff09;基础教程&#xff08;二&#xff09;——理解根签名、初识显存管理和加载纹理、理解资源屏障 DirectX12&#xff08;D3D12&…

【Linux】进程信号之信号的产生

进程信号 一 一、信号入门1、信号的一些特性2、信号的处理方式信号捕捉初识 3、Linux下的信号 二、信号的产生1、通过终端按键产生信号2、调用系统函数向进程发信号a、kill函数b、raise函数c、abort函数 3. 由软件条件产生信号4、硬件异常产生信号 结语 一、信号入门 什么是信号…

怎么解决亚马逊跟卖?为何卖家总是举报不成功?

以前大家都是从跟卖的时代走向现在的品牌化运营之路&#xff0c;但是现在跟卖已经从大家都模仿的对象变成了大部分卖家厌恶的对象&#xff0c;那么怎么解决这个跟卖问题呢&#xff1f;目前最直接的方法就是进入亚马逊后台进行举报&#xff0c;但是大概率是失败的。 一、举报违…

MySQL操作库

MySQL操作库 一.创建数据库1. 创建数据库的方式2. 创建数据库时的编码问题3. 指定编码创建数据库4. 验证校验规则对数据库的影响 二.数据库与文件系统的关系三.操纵数据库1. 查看数据库2. 删除数据库3. 修改数据库 四.数据库的备份和恢复1.数据库的备份2.数据库的恢复 五.查看连…

C++基础算法排序篇

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C算法 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 主要讲解C算法中所涉及到的两个排序算法&#xff0c;快排和归并。 文章…

【JavaEE】HTTP请求的构造

目录 1、通过form表单构造HTTP请求 2、通过JS的ajax构造HTTP请求 3、Postman的安装和简单使用 常见的构造HTTP请求的方式有一下几种&#xff1a; 直接通过浏览器的地址栏&#xff0c;输入一个URL&#xff0c;就可以构造一个GET请求HTML中的一些特殊标签&#xff0c;也会触发…

IT技术岗的面试技巧分享

我们在找工作时,需要结合自己的现状,针对意向企业做好充分准备。作为程序员,你有哪些面试IT技术岗的技巧?你可以从一下几个方向谈谈你的想法和观点。 方向一:分享你面试IT公司的小技巧 1、事先和邀约人了解公司的基本情况,比如公司的行业,规模,研发人员占比等 2、事先和…

超声医疗高压功率放大器ATA-4315技术参数

超声波检查或超声诊断&#xff0c;是一种非侵入性的医学检查方法&#xff0c;它利用了声波的高频振动来观察和评估人体内部的器官和组织。它基于不同密度和组织结构中传播的原理。通过将ultrasound(超声波)传递到身体的特定区域&#xff0c;并记录反射回来的声波&#xff0c;我…

牛顿修正法在二阶近似方法中的应用

使用optimtool的牛顿修正法来应用学习 pip install optimtool --upgrade pip install optimtool>2.4.2optimtool包所依据的理论支撑中&#xff0c;还没有为二阶微分方法作邻近算子的近似与修正&#xff0c;所以二阶近似方法是研究无不可微项的可微函数的算子。 牛顿修正法…

Element-UI 实现动态增加多个不同类型的输入框并校验(双重v-for表单验证)

文章目录 前言定义表单格式表单渲染和验证扩展 前言 在做复杂的动态表单&#xff0c;实现业务动态变动&#xff0c;比如有一条需要动态添加的el-form-item中包含了多个输入框&#xff0c;并实现表单验证&#xff0c;但在element-ui组件库中给出的表单校验中没有这样的格式&…

软件测试工程师最常用的web测试-浏览器兼容性测试

如今&#xff0c;市面上的浏览器种类越来越多&#xff08;尤其是在平板和移动设备上&#xff09;&#xff0c;这就意味着你所测试的站点需要在这些你声称支持浏览器上都能很好的工作。 同时&#xff0c;主流浏览器&#xff08;IE&#xff0c;Firefox&#xff0c;Chrome&#x…

腾讯、飞书等在线表格自动化编辑--python

编辑在线表格 一 目的二 实现效果三 实现过程简介1、本地操作表格之后进入导入在线文档2、直接操作在线文档 四 实现步骤讲解1、实现方法的选择2、导入类库3、设置浏览器代理直接操作已打开浏览器4、在线文档登录5、在线文档表格数据操作6、行数不够自动添加行数 五 代码实现小…

双电源并用问题与解决方案

双电源并用问题 曾经有客户在电源模块应用过程中出现过这样的应用场景&#xff0c;如下图1所示。客户使用两路电源给后端电路进行供电&#xff0c;要求在不断电的情况下切换输入电源&#xff0c;此过程中发现后端电路会出现损坏。对各个节点波形进行分析后发现&#xff0c;在给…

Kafka 入门到起飞 - 生产者发送消息流程解析

生产者通过send&#xff08;&#xff09;方法发送消息消息会经过拦截器->序列化器->分区器 进行加工然后将消息存在缓冲区当缓冲区中消息达到条件会按批次发送到broker对应分区上broker将接收到的消息进行刷盘持久化消息处理broker会返回给producer响应落盘成功返回元数据…

数据库应用:MySQL数据库SQL高级语句与操作

目录 一、理论 1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 5.MySQL中6种常见的约束 二、实验 1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 5.主键表和外键表 三、总结 一、理论 1.克隆表与清空表 克隆表&#xff1a;将数据表的数据记录…

socket编程代码示例

1. TCP server client模拟聊天对话框 server.c /* server.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <errno.h> #include <unistd.h> #include <sys/types.h> #include &l…

Docker

Docker 一、Docker 简介1.1 Docker 概述1.2 Docker1.3 Docker 受欢迎的原因1.4 Docker 与 openstack&#xff08;虚拟机&#xff09; 的区别1.5 Docker核心概念 二、安装 Docker三、Docker 命令四、Docker 镜像操作五、Docker 容器操作 一、Docker 简介 1.1 Docker 概述 Dock…

SpringBoot + Docker 实现一次构建到处运行

一、容器化部署的好处 Docker 作为一种新兴的虚拟化方式&#xff0c;它可以更高效的利用系统资源&#xff0c;不需要进行硬件虚拟以及运行完整操作系统等额外开销。 传统的虚拟机技术启动应用服务往往需要数分钟&#xff0c;而 Docker 容器应用&#xff0c;由于直接运行宿主内…

AI绘画创意文字全流程揭秘,你的终极文字艺术实操宝典

本教程收集于&#xff1a;AIGC从入门到精通教程汇总 AIGC技术不断更新迭代&#xff0c;国内出现了越来越多的新玩法&#xff0c;比如最近大家都在热议的AI绘画创意文字。 过去的一周&#xff0c;我把这些新玩法都研究了一遍&#xff0c;并总结了一套完整的制作流程。 主流的…

python+allure+jenkins

目录 前言 在 python 中使用 allure 1. 安装 pytest 2. 安装 pytest-allure-adaptor 3. 使用 pytest 执行测试用例并生成 allure 中间报告&#xff08;此步骤可以省略&#xff0c;因为在 jenkins job 中会配置执行类似的命令&#xff09; 4. Jenkins 中安装Allure Jenkin…