本文为博主原创,未经允许不得转载:

  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 常用命令的更多相关文章

  1. 数字证书管理工具keytool常用命令介绍

    需要给一个apk加签名,用到了keytool这个工具,下面转载一篇介绍keytool的文章 http://blog.chinaunix.net/uid-17102734-id-2830223.html ...

  2. Git:SSH、SSH与HTTP区别、git常用命令

    SSH1.首先需要检查你电脑是否已经有 SSH key cd ~/.sshls12.ssh表示ssh文件是个隐藏文件查看是否存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已经存在 ...

  3. maven跳过单元测试-maven.test.skip和skipTests的区别以及部分常用命令

    -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下. -Dmaven.test.skip=true,不执行测试用例,也不编译测试 ...

  4. Git常用命令及使用,GitLab/GitHub初探,Git/Svn区别

    Git安装配置及常用命令 0 Git本地分支管理 1 Git远程分支管理 2 Git Tag标签管理 3 Git Log日志 4 其它高级命令 5 常规使用及介绍 6 角色权限 7 分支定义 8 一般 ...

  5. keytool常用操作

    keytool 秘钥需要存储在秘钥库中,秘钥库可以理解为一个存储了一个或多个秘钥的文件.一个秘钥库可以存储多个密钥对,每个秘钥对你都需要给他们取一个名字. D:\software\Java\jdk1. ...

  6. maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository. ...

  7. Docker for Windows(三)Docker镜像与容器的区别&常用命令

    Docker镜像(Image)是一堆只读文件(read-only layer),容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是 ...

  8. su和sudo的区别与使用,su命令,linux命令

    su和sudo的区别与使用 一.   使用 su 命令临时切换用户身份 1. su 的适用条件和威力 su命令就是切换用户 的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务, ...

  9. 每天一个linux常用命令--ls 和 -ll 有什么区别?

    一.-ls 和 -ll  有什么区别? 1. ls 命令可以说是linux下最常用的命令之一.ll不是命令,是ls -l的别名相当于windows里的快捷方式.所以"ll"和“ls ...

  10. 【转】exec xargs的区别 另附eval命令介绍

    -exec:  对符合条件的文件执行所给的Linux 命令,执行exec后面的shell脚本.脚本中,{}表示命令的参数即为所找到的文件,以:表示comman命令的结束.\是转义符,因为分号在命令中还 ...

随机推荐

  1. bash shell笔记整理——head命令

    作用 我直接搬运官方英文了,这英文真的简单直白了,我英语辣鸡...毕竟我学历不行,觉得翻译不好就直接自己来吧.. Print the first 10 lines of each FILE to st ...

  2. 数字孪生结合GIS能够在公共交通领域作出什么贡献?

    数字孪生结合地理信息系统(GIS)在公共交通领域具有潜在的重大贡献,这种结合可以帮助城市更高效地规划.运营和改进公共交通系统.以下是一些关键方面的讨论,以说明数字孪生和GIS在这一领域的作用: 数字孪 ...

  3. 数字孪生与GIS结合,为智慧交通带来的改变

    在当代社会,交通问题已经成为城市发展中的一个重要挑战.交通拥堵.安全隐患.环境污染等问题给人们的出行带来了许多不便和困扰.然而,随着数字孪生技术与地理信息系统(GIS)的融合,我们迎来了智慧交通的新时 ...

  4. Android辅助功能

    1:AccessibilityService 新建service public class AccessibilityService extends android.accessibilityserv ...

  5. 【Python】【ChatGPT】本地部署ChatGPT学习记录

    学习一下GPT项目的相关使用和部署 一.GPT4ALL模型 Github:https://github.com/nomic-ai/gpt4all GPT4ALL项目部署简易,但是在运行体验上一般,并且 ...

  6. Docker部署系列之Docker Compose安装Redis三主三从集群

    总结/朱季谦 在日常开发或者编程当中,经常需要用到redis集群,若是按照传统的方式,一个机器一个机器搭建,难免过于繁琐,故而可以通过dock er-compose编排方式,快速搭建.我在搭建过程当中 ...

  7. Python——第四章:推导式(Comprehensions)

    推导式: 推导式是为了简化代码. 语法: 列表推导式:[数据 for循环 if判断] 集合推导式:{数据 for循环 if判断} 字典推导式:{k:v for循环 if判断} 元组推导式:不存在(因为 ...

  8. 26、Flutter中命名路由

    Flutter 中的命名路由 main.dart中配置路由 void main() { runApp(MaterialApp( theme: ThemeData( appBarTheme: const ...

  9. 总结vue3 的一些知识点:Vue.js 安装

    Vue.js 安装 1.独立版本 我们可以在 Vue.js 的官网上直接下载 vue.min.js 并用 <script> 标签引入. 下载 Vue.js 2.使用 CDN 方法 以下推荐 ...

  10. 火山引擎ByteHouse:如何用OLAP引擎提升数字营销效果?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   随着市场竞争的加剧,企业对数字营销投入的效果监测和优化需求日益增强,营销实时监控也成为企业提升运营效率的重要手 ...