java生成SSL证书并添加信任,tomcat配置https访问并解决扫描漏洞问题

news2025/1/16 3:54:41

一、java生成keystore密钥对

1、打开jdk的bin目录,使用keytool工具生成keystore密钥对

Keytool 是一个 Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存储于一个称为 keystore 的密钥库文件中。

2、可查看帮助命令参考

keytool -help

(1)-genkeypair

-genkeypair命令可以产生密钥对(一个公钥与关联的私钥),将公钥打包至X.509 v3自签名证书中,证书以单元素证书链的形式存储。该证书链与私钥存储在密钥库的新条目中,通过-alias选项进行标识

(2)-genseckey

可以创建一个秘密密钥并将其存储在新的SecretKeyEntry中,通过-alias选项进行标识。

(3)-importcert

读取file选项指定的证书或证书链(证书链为PKCS#7格式回复),并将其保存至密钥库中alias选项指定的条目中。若未指定file选项,则从标准输入读取证书或PKCS#7回复。

keytool可以导入X.509版本1、版本2、版本3的证书,以及PKCS#7格式的证书组成的证书链。被导入的数据需要为二进制格式,或可打印的编码格式(即Base64编码)。当导入Base64编码格式的证书时,证书数据的头部需要以"-----BEGIN"开头,尾部需要以"-----END"开头。

以下两种情况需要将证书导入密钥库:

a.将证书添加到密钥库的受信任证书列表中;
b.将提交给CA的证书签名请求对应的CA返回的证书回复导入密钥库。

在早期的版本中,该命令的名字为-import。在当前版本与以后的版本中,旧名称仍然被支持,但推荐使用新名字-importcer

(4)-list

用于打印-alias选项标识的密钥库条目的内容。如果未指定-alias选项,密钥库的全部内容将会被打印。

该命令默认打印证书的MD5指纹。当指定了-v选项时,会使用可读的形式进行打印,包含额外的信息,如所有者、所有者、序列号等。当指定了-rfc选项时,证书内容会以Internet RFC 1421标准定义的可打印编码格式进行输出。

-v与-rfc选项不可以同时指定。

(5)-printcert

从-file选项指定的文件中读取证书,并将其内容以可读的形式进行指定。若未指定-file选项,则从标准输入读取证书。

被查看的证书可为二进制编码形式或Internet RFC 1421标准定义的可打印编码格式。

(6)-delete

用于从密钥库中删除-alias选项对应的条目。当未指定-alias选项时,将会提示输入。

(7)-storepass

storepass选项对应的密码用于保护密钥库的完整性。storepass必须为至少6个字节。当需要操作密钥库内容时,所有的命令都需要指定storepass选项。对于这些命令,如果-storepass选项未在命令行中指定,keytool将会提示用户。

当从密钥库检索信息时,密码是可选的;如果不指定密码,被检索信息的完整性将无法检查,且会有警告显示。

3、相关选项默认值:

(1)-alias

指定密钥库操作的条目对应的别名,默认值为"mykey"。

(2)-keyalg

keyalg选项指定生成密钥对或私钥时使用的算法,1.6版本后默认值与生成秘钥的命令有关。如下:

JRE版本keyalg默认值
1.5DSA
1.6DSA(-genkeypair) & DES(-genseckey)
1.7DSA(-genkeypair) & DES(-genseckey)
1.8DSA(-genkeypair) & DES(-genseckey)

(3)-keystore

指定密钥库文件位置,默认值为用户目录(C:\Users\Administrator)的.keystore文件。

(4)-sigalg

sigalg选项指定对自签名证书或证书签名请求进行签名时使用的算法,sigalg对应的算法需要与keyalg对应的算法兼容。在生成公/私钥对时,sigalg选项对应的签名算法从底层私钥的算法衍生而来。

JRE版本sigalg选项默认值
1.5SHA1withDSA(底层私钥为DSA类型),MD5withRSA(底层私钥为RSA类型)
1.6SHA1withDSA (底层私钥为DSA类型),SHA256withRSA (底层私钥为RSA类型)
1.7SHA1withDSA (底层私钥为DSA类型),SHA256withRSA (底层私钥为RSA类型),SHA256withECDSA (底层私钥为EC类型)
1.8SHA1withDSA (底层私钥为DSA类型),SHA256withRSA (底层私钥为RSA类型),SHA256withECDSA (底层私钥为EC类型)

(5)-keysize

指定生成的密钥长度,默认值如下:

JRE版本keysize默认值
1.51024
1.6

1024 (使用-genkeypair)

56 (使用-genseckey且-keyalg选项为"DES")

168 (使用-genseckey且-keyalg选项为"DESede")

1.7

2048 (使用-genkeypair且-keyalg为"RSA")

1024 (使用-genkeypair且-keyalg为"DSA")

256 (使用-genkeypair且-keyalg为"EC")

56 (使用-genseckey且-keyalg为"DES")

168 (使用-genseckey且-keyalg为"DESede")

1.8

2048 (使用-genkeypair且-keyalg为"RSA")

1024 (使用-genkeypair且-keyalg为"DSA")

256 (使用-genkeypair且-keyalg为"EC")

56 (使用-genseckey且-keyalg为"DES")

168 (使用-genseckey且-keyalg为"DESede")

(6)-validity

指定有效期,单位为天,默认值为90

(7)-storetype

指定密钥库的存储类型,默认值为Java安全属性文件java.security中的"keystore.type"属性值(jks)

秘钥说明:

JKS:

KS是内置的默认密钥库实现类型,由Sun Microsystems提供。JKS类型将密钥库以文件形式实现,利用专有的密钥库类型。它对每个私钥使用其私有的密码进行保护,同时对整个密钥库使用一个密码(有可能不同)保护其完整性。密钥库类型名称不区分大小写。例如,“jks"被认为等同于"JKS”。

JCEKS:

"JCEKS"是另一种替代的专用密钥库格式,与"JKS"相比,"JCEKS"使用更健全的加密方式,使用基于口令的3DES加密。

Sun的"JCEKS"实现可以对"JKS"密钥库解析并转换为"JCEKS"格式。你可以将"JKS"类型的密钥库升级为"JCEKS"类型,通过修改密钥库中私钥条目的密码,需要指定"-storetype jceks"作为密钥库类型。

PKCS12:

"PKCS12"是另一种选项,这是一种跨平台的密钥库,基于RSA PKCS12个人信息交换标准。这个标准主要用于存储或传输用户的私钥、证书以及各种秘密。

DKS:
"dks"是域密钥库,它是密钥库的集合,表现为一个逻辑上单独的密钥库

PKCS11:

当密钥库的类型为pkcs11时,为支持PKCS#11令牌的密钥库。

JDK版本支持的秘钥库类型
1.5JKS,PKCS12
1.6JKS,PKCS12,JCEKS
1.7JKS,PKCS12,JCEKS
1.8JKS,PKCS12,JCEKS,DKS,PKCS11

4、生成密钥对命令

keytool –genkeypair –alias tomcat –keyalg "RSA" –keysize 2048 –sigalg SHA256withRSA –validity 3650 –keystore D:\tomcat.keystore –storetype pkcs12
# 秘钥库别名tomcat
# 使用的算法RSA
# 生成秘钥的长度 2048
# 签名算法SHA256withRSA
# 有限期3650天
# 秘钥库文件位置 d盘
# 秘钥库存储类型 pscs12(默认jks)

输入秘钥库口令:必须为至少6个字节

其他例如名字组织等,随便填写。

二、tomcat配置https访问

打开tomcat的conf目录,编辑配置文件server.xml,取消connector标签注释,添加如下配置,如需其他配置请自行添加:

SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="生成的证书文件地址"
keystorePass="密钥库口令"

此时运行tomcat服务后,可通过https及配置中的端口访问服务。

三、漏洞修复

1、远程服务接受使用 TLS 1.0 加密的连接

TLS 1.0 具有若干加密设计缺陷。现如今的 TLS 1.0 实施缓解了这些问题,不过应尽可能使用诸如 1.2 和 1.3 等较新的 TLS 版本,其专为应对这些缺陷而设计。
自 2020 年 3 月 31 日起,主流 Web 浏览器和供应商将无法再正常使用未启用 TLS 1.2 及更高版本的端点。

在tomcat的conf/server.xml配置中,修改配置:

sslEnabledProtocols="TLSv1.2"

 在jdk安装目录下jre/lib/security/java.security中修改以下配置:

jdk.tls.disabledAlgorithms=SSLv2Hello, SSLv3, TLSv1, TLSv1.1

2、无法信任该服务的 SSL 证书

访问显示证书错误或失效

点击查看证书

 默认下一步到此处,指定证书文件位置和名称

 

 

以管理员身份运行命令提示符窗口:

进入jdk下的bin目录,执行证书-导入命令:

keytool –import –v – trustcacerts –alias tomcat –keystore jre路径/lib/security/cacerts –file D:/tomcat.cer –storepass changeit

# 当指定了-trustcacerts选项时,cacerts文件中的证书也会作为受信任证书参与上述验证
# 库密钥storepass默认口令输:changeit

 window + R打开运行窗口,输入mmc

 文件 --》添加控制单元

 点击证书后,选择添加,默认下一步即可。

 

如图,在受信任的根证书颁发机构处下,右击证书选择导入,

 找到cer证书

 

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

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

相关文章

某车企用户数据泄露,新能源汽车信息安全问题不容忽视

某车企:公司核心数据被窃取 12月20日,国内某新能源汽车发布相关声明称,2022年12月11日,其收到外部邮件,声称拥有该车企内部数据,并以泄露数据勒索225万美元等额比特币(约合1570.5万元人民币&am…

FFmpeg学习笔记--Ubuntu20.04编译安装FFmpeg、FFplay和FFprobe

目录 1--下载FFmpeg 2--编译FFmpeg 3--设置环境变量 4--测试 1--下载FFmpeg ① 下载 5.1 版本的 ffmpeg wget http://www.ffmpeg.org/releases/ffmpeg-5.1.tar.gz ② 解压下载的压缩包 tar -zxvf ffmpeg-5.1.tar.gz 2--编译FFmpeg ① 进入解压后的文件夹 cd ffmpeg-5…

基于JAVA Spring Boot高颜值的教学管理平台(含小程序),提供权限管理、考试、问卷、练习、在线学习等功能

Welcome to sg-exam-next 👋 硕果云,基于Spring Boot搭建的方便易用、高颜值的教学管理平台,提供权限管理、考试、问卷、练习等功能 主要功能为在线学习、考试、练习 课程内容支持图文、视频,考试类型支持考试、练习、问卷 题型支…

Android插件化技术——【class学习】

class 文件的定义 class 文件就是能够被 JVM 识别,加载并且执行的文件格式。从定义来看,class 文件没有想象中的那么神秘,和其他格式如 txt,mp4 一样,只是一种文件格式,它存储的是我们应用程序。 不止 Ja…

matlab/simulink中关于如何使得信号FFT和IFFT前后功率保持一致

快速傅里叶变换FFT其实是一种对离散傅里叶变换DFT的快速算法 为了便于公式推导和理解,本文从DFT的公式出发进行解释,在帕萨瓦尔定律的条件下,探究如何保证FFT/IFFT前后信号功率保持一致。 目录模型假设FFT前后功率保持一致IFFT前后功率保持一…

Bluetooth LE相关学习笔记

The Bluetooth LE Specifications The Bluetooth Core Specification 核心规范适用于 Bluetooth LE和Bluetooth Classic,它定义了蓝牙的体系结构及其层次,描述和定义了蓝牙的关键特性,定义了设备在协议栈的特定层上进行重要操作的方法和通信…

【圣诞限定】2022的末尾,送TA一颗圣诞树吧

2022年圣诞节,很高兴能遇见你。 一、前言 不知不觉又到年末啦,今年遇到了超级超级棒的人,希望能跟他一起做很多很多事,完成很多很多未完成的心愿。既然是圣诞节限定,那就送他一颗圣诞树吧🎄天天开心&#…

开发者百宝箱——DevToys

开发者百宝箱——DevToys 文章目录 简介安装转换类型编码/解码格式化生成器文本处理图片设置参考文献 简介 DevToys 是一个开发人员的工具箱,基于 UWP 开发,免费开源无广告,支持中文,功能有: 转换类型 JSON / YAML…

【C语言进阶】指针的进阶

在初级阶段的《指针》章节已经接触过了,我们知道了指针的概念: 1. 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 2. 指针的大小是固定的4/8个字节(32位平台/64位平台)。 3. 指针是有类型&#…

Word处理控件Aspose.Words功能演示:使用 C# 将 PowerPoint 演示文稿转换为 Word 文档

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处…

Android自动化打包记录--Jenkins+Docker+WSL2

Android自动化打包记录--JenkinsDockerWSL2前言自动化流程测试环境生产环境自动化原理Windows下安装Ubuntu安装步骤相关error处理error: 0x8007019eerror: 0x800701bc、0x80370102WSL访问WindowsWSL访问内网Ubuntu下Docker内容安装运行HelloWorld拉取镜像镜像和容器命令创建镜像…

你不一定了解MySQL中的Decimal数据类型

一、前言 在此之前笔者写过一篇博客《你说精通MySQL其实很菜jī(1):你不一定会的基本技巧或知识点(值得一看)》,本文内容是从那篇博客截取出来的。MySQL中Decimal数据类型大家经常使用到,但是&a…

从零了解多线程(万字详解)

目录 为什么要引入多线程? 为什么线程更轻? 线程和进程的关系 多线程的弊端 Thread类 用Thread类创建一个线程并启动它 用一段通过多线程体现并发执行的效果 start和run的区别 使用jdl自带的工具包jconsole查看当前java进程中的所有线程 调用栈 注意: jave中创建线…

Duplicate File Finder Pro - 重复文件查找器,给你的 Mac 清理出大量磁盘空间

Duplicate File Finder Pro - 重复文件查找器,给你的 Mac 清理出大量磁盘空间 重复文件查找器 Duplicate File Finder Pro 是一个实用程序,只需3次点击就能在Mac上找到重复的文件。拖放功能和尽可能多的文件夹,你想,然后按下扫描按…

理解Linux中的进程状态

文章目录运行状态阻塞状态挂起状态磁盘睡眠状态暂停状态追踪停止状态僵尸状态死亡状态孤儿状态Linux内核进程状态源代码一台电脑一般只有一个CPU、一个磁盘(无论一台电脑有几个CPU、磁盘,数量都是远少于进程的,这里举例用一个)。运…

2022年广西食品安全管理员模拟试题及答案

百分百题库提供食品安全管理员考试试题、食品安全管理员考试预测题、食品安全管理员考试真题、食品安全管理员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 一、单选题 1.(重点)《上海市集体用餐配…

深度对比MemcacheD 和 Redis,论你不知道的二三事

谈到深度对比MemcacheD 和 Redis,作为老牌程序员首先想到的就是Memcache好一点,毕竟更节省内存。还可以存图片视频之类的,大部分市面上的cache都是MemcacheD。 但是评价一款cache并不能只看这一方面不是~ 数据存储的安全系数 要知道&#…

2023春招面试题:Redis数据库面试题整理

redis是什么?(必会) Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能非关系型(NoSQL)的(key-value)键值对数据库。可以用作数据库、缓存、消息中间件等。 redis…

STM32F103学习

目录 1、框架了解 2.GPIO (1)开漏输出与推挽输出 (2)基本知识了解 HAL库函数: 配置流程: (3)按键实验:STM32的按键开发基础_哔哩哔哩_bilibili 3、时钟 时钟框图…

力扣(leetcode)经典题目分享第3期——栈和队列

栈和队列一. 选择题1.1 进出栈顺序1.2 循环队列1.3 队列的基本运算1.4 循环队列的有效长度二. OJ练习题2.1 括号匹配问题2.2 用队列实现栈2.3 用栈实现队列2.4 循环队列总结:一. 选择题 1.1 进出栈顺序 若进栈序列为 1,2,3,4 ,进栈过程中可以出栈&…