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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL考试难不难 ?

当涉及到PostgreSQL考试的详细难度&#xff0c;以下是一些可能涉及的主题和考点&#xff0c;这些主题在不同的考试中可能有所不同&#xff1a; 1.数据库基础知识&#xff1a;数据库的基本概念、关系型数据库模型、表、字段、主键、外键等。 2.SQL语言&#xff1a;对SQL语言的掌…

【力扣】543. 二叉树的直径

543. 二叉树的直径 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之间边数表示。 示例 1&#xff1a; 输入&#xff1a;root…

【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用

目录 前言实际操作注册OPPO平台账号打开创建技能界面创建技能创建意图槽位解析对话管理对话测试接口代码编写接口创建新建意图对话管理测试猜想测试相关文档前言 适用人群:本教程适合大赛接入小布语音技能的同学以及初次使用小布助手的开发者 本篇文章是博主弄了多次测试才勉…

本地部署 Stable Diffusion XL Gradio Demo WebUI

StableDiffusion XL Gradio Demo WebUI 0. 先展示几张 StableDiffusion XL 生成的图片1. 什么是 Stable Diffusion XL Gradio Demo WebUI2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 Stable Diffusion XL Gradio Demo WebUI6. 启动 Stable Diffusion XL Gradio De…

excel文件导入或导出Java代码示例

1、excel文件导入 controller层接口内容 service层代码 serviceImpl内代码内容 OverrideTransactional(rollbackFor Exception.class)public void importCheckItemExcel(MultipartFile file, Long checkPkgId) throws Exception {if (file.isEmpty()){throw new IOException(…

使用WebRTC实现多人视频会议

1.初步准备 1.1.使用同事nodejs开发的一个信令服务器。提供Https的WebSocket功能 1.2.准备一个多人视频会议的客户端Web程序client.html 2.遇到问题 2.1.在Tomcat下打开client.html&#xff0c;如果不使用http://127.0.0.1:8081/vedio/client.html&#xff0c;而使用实际IP…

uni-app实现emoj表情包发送(nvue版)

uni-app实现表情包发送&#xff0c; vue实现思路直接使用grideview网格布局加载emoj表情包即可实现&#xff0c;很简单&#xff0c;但是nvue稍微复杂&#xff0c;这里采用的方案是nvue提供的组件list 看效果 代码 <template><view style"margin-right: 10rpx;m…

Golang跨平台UI框架之Wails(二)

上一篇文章我们讲解了如何简单创建一个 wails 的项目,但是现在有很多前端框架我们可以选择,比如: AngularVueSvelteReactLitVanilla各个都是时代的弄潮儿,就看哪一个适合你了,后续的系列都是以Angular为例。 1. 创建Angular模板项目 由于 wails 是没有官方支持Angular的…

浅谈自动化测试工具 Appium

目录 前言&#xff1a; 一、简单介绍 &#xff08;一&#xff09;测试对象 &#xff08;二&#xff09;支持平台及语言 &#xff08;三&#xff09;工作原理 &#xff08;四&#xff09;安装工具 二、环境搭建 &#xff08;一&#xff09;安装 Android SDK &#xff0…

uniapp自定义头部,计算状态栏和导航栏高度超简单三步

效果图 1.pages.json 页面给要自定义头部的页面加入一行代码 "navigationStyle":"custom" {"path": "pages/index/index","style": {"navigationBarTitleText": "","navigationStyle":"…

Redis 读写分离 使用redisTemplate执行lua脚本时,报错处理

项目框架说明 项目配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version></parent>....<dependency><groupId>org.springfra…

MySQL内置函数

内置函数从实现的功能角度可以分为数值函数、字符串函数、日期和时间函数、流程控制函数、加密与解密函数&#xff0c;获取MySQL信息函数、聚合函数等。 1.数值函数 来源&#xff1a; 版权声明&#xff1a;本文为CSDN博主「清风拂来水波不兴」的原创文章&#xff0c;遵循CC 4…

带记忆的Transformer模块

MEMORIZING TRANSFORMERS 返回论文和资料目录 论文地址 1.导读 谷歌去年做的一个工作。内容很简单&#xff0c;在Transformer模块中加入了一层记忆层&#xff0c;结果表明这个方法可以帮助模型提高在NLP任务上的表现&#xff1a;generic webtext (C4), math papers (arXiv),…

纯干货!!!Java后端技术清单(附图)

分享一份最新的Java后端开发技能清单&#xff0c;可根据自身情况以及岗位招聘要求做动态调整&#xff0c;核心思想就是尽可能满足岗位招聘的所有技能要求。 Java后端技术清单: 1.计算机基础:熟练掌握计算机网络、数据结构和算法、操作系统&#xff0c;了解计算机组成原理。 …

06_本地方法接口+07_本地方法栈

一、本地方法&#xff1f; 本地方法就是Java调用非Java代码的接口。 本地方法的作用是融合不同的编程语言为Java所用&#xff0c;它的初衷是融合 C、C程序 二、为什么要使用Native Method? 三、本地方法栈 Java虚拟机栈用于管理Java方法的调用&#xff0c;而本地方法栈用于…

PyCharm 常用快捷键

目录 1、代码编辑快捷键 2、搜索/替换快捷键 3、代码运行快捷键 4、代码调试快捷键 5、应用搜索快捷键 6、代码重构快捷键 7、动态模块快捷键 8、导航快捷键 9、通用快捷键 1、代码编辑快捷键 序号快捷键作用1CTRLALTSPACE快速导入任意类2CTRLSHIFTENTER代码补全3SHI…

nacos注册中心+Ribbon负载均衡+完成openfeign的调用(超详细步骤)

目录 1.注册中心 1.1.nacos注册中心 1.2. 微服务注册和拉取注册中心的内容 2.3.修改订单微服务的代码 3.负载均衡组件 3.1.什么是负载均衡 3.2.什么是Ribbon 3.3.Ribbon 的主要作用 3.4.Ribbon提供的负载均衡策略 4.openfeign完成服务调用 4.1.什么是OpenFeign 4.2…

第四章 云原生架构之Kubernetes基础知识

1、K8S整体架构 1.1、概述 ​ Kubernetes是一个可移植、可扩展的开源平台&#xff0c;用于管理容器化的工作负载和服务&#xff0c;简称 K8S。K8S的本质是一组服务器集群&#xff0c;可以在对应服务器集群的每个节点上运行程序&#xff0c;来对节点中的容器进行管理。类似Mas…

Mac怎么把mov转换成mp4?

mac怎么把mov转换成mp4&#xff1f;在我们准备转换之前&#xff0c;让我们先了解一下为什么要将MOV格式转换为MP4格式。MOV格式是美国苹果公司独立开发发布的视频文件格式&#xff0c;在Mac电脑以及苹果其它智能设备上播放效果非常出色。然而&#xff0c;如果您想与他人分享视频…

[JVM] 3. 类加载子系统(2)-- 类加载器、双亲委派机制(JDK1.8及之前)及其他

前言 JDK1.8及之前和JDK9及之后的双亲委派模型是不一样的&#xff0c;这里学习了1.8及以前的双亲委派模型&#xff0c;记录笔记 一、类加载器 1.8之前主要是这几种类加载器&#xff1a; 1. 启动类加载器(Bootstrap ClassLoader)&#xff1a; 负责将存放在<JAVA_HOME>…