keystore 与 trust store 的区别 及 keytool 常用命令
本文为博主原创,未经允许不得转载:
1. key store 与 trust store 区别
2. java 配置 单向认证与双向认证的过程
3. key store 与 trust store 常用命令
4. tomcat , zookeeper 配置 双向认证过程
1. key store 与 trust store 区别
keystore是存储密钥(公钥、私钥)的容器。
keystore和truststore其本质都是keystore。只不过二者存放的密钥所有者不同而已。本质都是相同的文件,只不过约定通过文件名称区分类型以及用途
对于keystore一般存储自己的私钥和公钥,而truststore则用来存储自己信任的对象的公钥。
2. 单向认证与双向认证
单向认证:
单向认证是客户端验证服务端的真伪性,所以需要将服务器端的证书server.crt导出,导出的server.crt就是服务器端的公钥。然后将 server.crt 导入到客户端的 trustore 中。这样服务器就被客户端信任了,连接时客户端使用服务器端的公钥去验证服务器。
双向认证:
服务器的公钥导入到客户端的truststore,客户端的公钥导入到服务器端的truststore中。
客户端请求服务器端,服务器端通过预置有客户端证书的 trust store 验证客户端的证书,如果证书被信任,则验证通过
服务器端响应客户端,客户端通过预置有服务端证书的 trust store 验证服务端的证书,如果证书被信任,则验证通过,完成一个双向认证过程。
java 在jdk 中已经默认在 $JAVA_HOME/lib/security/cacerts 这个文件中预置了常用的 证书

3. key store 与 trust store 常用的命令:
3.1 创建证书
keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore test.keystore.jks
-genkeypair:生成一对非对称密钥;
-alias:指定密钥对的别名,该别名是公开的;
-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;
-keystore:密钥库的路径及名称,不指定的话,默认在操作系统的用户目录下生成一个".keystore"的文件
3.2 查看 Keystore 的内容
keytool -list -v -keystore test.keystore.jks
3.3 添加一个信任根证书到keystore文件
keytool -import -alias newroot -file root.crt -keystore test.keystore.jks
3.4 导出 jks 的证书文件到指定文件
keytool -export -alias alias_name -keystore test.keystore.jks -rfc -file test.cer
3.5 删除jks 中指定别名的证书
keytool -delete -keystore test.keystore.jks -alias alias_name
4. tomcat 配置 ssl 认证
打开server.xml,找到
<!-- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> -->
这样一段注释,在这段注释下面添加如下一段代码:
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="false" maxThreads="25" port="8443" keystoreFile="D:\developTools\apache-tomcat-idm\tomcat.keystore" keystorePass="111111" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS" />
其中clientAuth=”false”表示是SSL单向认证,即服务端认证,port=”8443”是https的访问端口,keystoreFile="D:\developTools\apache-tomcat-idm\tomcat.keystore"是第一步中生成的keystore的保存路径,keystorePass="111111"是第一步生成的keystore的密码。
为了验证是否已经配置正确,我们可以在浏览器中进行验证。首先启动tomcat,然后在浏览器地址输入栏中输入:https://localhost:8443。会提示网站证书不受信任,需要手动点击确定。
keystore 与 trust store 的区别 及 keytool 常用命令的更多相关文章
- 数字证书管理工具keytool常用命令介绍
需要给一个apk加签名,用到了keytool这个工具,下面转载一篇介绍keytool的文章 http://blog.chinaunix.net/uid-17102734-id-2830223.html ...
- Git:SSH、SSH与HTTP区别、git常用命令
SSH1.首先需要检查你电脑是否已经有 SSH key cd ~/.sshls12.ssh表示ssh文件是个隐藏文件查看是否存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已经存在 ...
- maven跳过单元测试-maven.test.skip和skipTests的区别以及部分常用命令
-DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下. -Dmaven.test.skip=true,不执行测试用例,也不编译测试 ...
- Git常用命令及使用,GitLab/GitHub初探,Git/Svn区别
Git安装配置及常用命令 0 Git本地分支管理 1 Git远程分支管理 2 Git Tag标签管理 3 Git Log日志 4 其它高级命令 5 常规使用及介绍 6 角色权限 7 分支定义 8 一般 ...
- keytool常用操作
keytool 秘钥需要存储在秘钥库中,秘钥库可以理解为一个存储了一个或多个秘钥的文件.一个秘钥库可以存储多个密钥对,每个秘钥对你都需要给他们取一个名字. D:\software\Java\jdk1. ...
- maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令
maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository. ...
- Docker for Windows(三)Docker镜像与容器的区别&常用命令
Docker镜像(Image)是一堆只读文件(read-only layer),容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是 ...
- su和sudo的区别与使用,su命令,linux命令
su和sudo的区别与使用 一. 使用 su 命令临时切换用户身份 1. su 的适用条件和威力 su命令就是切换用户 的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务, ...
- 每天一个linux常用命令--ls 和 -ll 有什么区别?
一.-ls 和 -ll 有什么区别? 1. ls 命令可以说是linux下最常用的命令之一.ll不是命令,是ls -l的别名相当于windows里的快捷方式.所以"ll"和“ls ...
- 【转】exec xargs的区别 另附eval命令介绍
-exec: 对符合条件的文件执行所给的Linux 命令,执行exec后面的shell脚本.脚本中,{}表示命令的参数即为所找到的文件,以:表示comman命令的结束.\是转义符,因为分号在命令中还 ...
随机推荐
- hello Flask最简单的Flask项目
# 1.导包 from flask import Flask # 2.实例化Flask对象.一般变量名都叫app,大家都是这样用,很多扩展插件的文档也是叫app,所以统一都叫app. # __name ...
- Scrapy如何在爬虫类中导入settings配置
假设我们在settings.py定义了一个IP地址池 ##### 自定义设置 IP_PROXY_POOL = ( "127.0.0.1:6789", "127.0.0.1 ...
- 封装Detours用于Python中x64函数hook
Detours 代码仓库: https://github.com/microsoft/Detours x64写一个任意地址hook要比x86麻烦的多,所以这里直接封装框架来用于x64的hook. De ...
- 华企盾DSC无缝替换其它加密软件两种方法
有源码和大型图纸的使用第一种方案 第一种: 1.把DSCClient.exe和DSCService.exe添加到竞品的加密软件进程中,配置允许打开加密文件,加密类型不加密 2.安装DSC客户端后扫描加 ...
- python tkinter使用(四)
python tkinter使用(四) 本篇文章主要讲下tkinter 的文本框相关. tkinter中用Entry来实现输入框,类似于android中的edittext. 具体的用法如下: 1:空白 ...
- Windows10安装WSL2和Ubuntu的过程
因为在Windows10环境中安装了2个相同的包导致冲突,所以想到了通过WSL2+Docker的方式进行编程开发.因为Docker Desktop直接安装就行了,不做介绍.本文主要介绍WSL2和U ...
- LeetCode DP篇-背包问题(416、518)
416. 分割等和子集 给定一个只包含正整数的非空数组.是否可以将这个数组分割成两个子集,使得两个子集的元素和相等. 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: ...
- 数仓实践丨主动预防-DWS关键工具安装确认
摘要:gdb确认是否安装,所带来的该工具用户数据库实例触发core问题后集群状态反复异常,对此问题及时分析根因并及时进行规避. 本文分享自华为云社区<主动预防-DWS关键工具安装确认>,作 ...
- 测试用例又双叒叕失败了,NLP帮你
摘要:本文将介绍如何使用AI技术实现失败测试用例的智能分析. 本文分享自华为云社区<测试用例又双叒叕失败了,啥原因?NLP帮你来分析>,作者: 敏捷的小智 . 随着软件行业的快速发展,为了 ...
- 乐高式扩展:在Seal软件供应链防火墙中轻松集成代码规范工具
上个月,Seal 软件供应链防火墙 v0.2(以下简称"Seal")正式发布,这一版本实现了可扩展架构,用户可以根据自身需求插件式集成原生或第三方解决方案,灵活扩展扫描能力. 在前 ...