keytool 命令总结

一、创建数字证书

交互模式

使用默认的密钥库.keystore(目录是c: Documents and Setting用户名)和算法(DSA)

keytool -genkey

默认的别名mykey

密钥库中可以存放多个条目(公钥/私钥对和证书),它们在密钥库中以别名(alias)区分。

keytool -genkey -alias mytest -keyalg RSA -keysize 1024 -keystore mykeystore -validity 4000

其中,

-keyalg参数可以指定密钥的算法,如果需要指定密钥的长度,可以再加上-keysize参数。密钥长度默认为1024位,使用DSA算法时,密钥长度必须在512到1024之间,并且是64的整数倍。

-keystore参数可以指定密钥库的名称。密钥库其实是存放密钥和证书的文件,密钥库对应的文件如果不存在自动创建。

-validity参数可以指定所创建的证书有效期是多少天。

非交互模式:

keytool -genkey -dname "CN=tmp, OU=NC, O=Shanghai University, L=ZB, ST=Shanghai, C=CN" -alias tmp -keyalg RSA -keystore mykeystore -keypass wshr.ut -storepass wshr.ut  -validity 1000

二、数字证书的显示(从密钥库中)

默认密钥库全部证书信息

keytool -list -v(显示详细信息)

显示指定密钥库指定条目证书信息(包含了发照者(签发者)、序号、有效期、MD5和SHA1认证指纹等额外信息)

keytool -list -v -keystore lfkeystore -alias lf

三、使用Keytool将数字证书导出到文件

将指定的证书从密钥库导出为没编码过的文件。

keytool -export -alias lf -file lf.cer  -keystore lfkeystore

四、使用Keytool从文件中显示证书

keytool -printcert -file  lf.cer

五、在Windows中从文件显示证书

只要文件名以.cer为后缀,Windows操作系统就可以直接识别。如在Windows中双击lf.cer图标,将出现证书窗口。其中包含了证书的所有者、颁发者、有效期等信息。

点击“详细资料”,可以看到证书的版本、序号、签名算法、颁发者、有效期、主题(即全名)、公钥算法、拇印算法、拇印等信息。其中的拇印即认证指纹。

六、密钥库的维护

使用Keytool删除指定条目

keytool -delete -alias tmp1 -keystore mykeystore

使用Keytool修改指定条目的口令

keytool -keypasswd -alias tmp1 -keystore mykeystore

(非交互模式:keytool -keypasswd -alias tmp1 -keystore mykeystore -storepass wshr.ut -keypass 123456 -new 080302,其中080302为原密码,123456为新密码 )

Java程序列出密钥库所有条目

相关知识点:Java程序读取证书和显示证书指定信息    Java程序实现密钥库的维护

证书生成应用实例:

执行命令前先保证文件夹存在。例如:在c盘建立keystore文件夹
第一步:为服务器生成证书

确定域名:本机中域名解析修改文件是C:WINDOWSsystem32driversetchosts
使用keytool 为 Tomcat 生成证书和密钥库,假定目标机器的域名是“ hepengfei ”, keystore 文件存放在“ C:keystoreserver ”,口令为“ 080302 ”,命令如下: 
keytool -genkey -v -keystore C:keystoreserver -alias serverkey -keyalg RSA -validity 3650 -dname "CN=hepengfei,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 080302 -keypass 080302

生成server.cer安装在客户端解决服务器信任问题:

keytool -export -keystore C:keystoreserver -alias serverkey -file c:keystoreserver.cer -storepass 080302

第二步:为客户端生成证书

(注意:个人证书的生成和使用比较特别,是分开的。先生成p12文件,然后导出cer文件,再将cer文件导入默认类型的keystore(JKS)文件)
这一步是为浏览器生成证书,以便让服务器来验证它。为了能将证书顺利导入至IE 和 Firefox ,证书格式应该是 PKCS12 ,因此,使用如下命令生成:

keytool -genkey -v -keystore C:keystoreuser.p12 -alias MyPC -keyalg RSA -storetype PKCS12 -validity 3650 -dname "CN=MyPC,OU=cn,O=cn,L=cn,ST=cn,c=cn" -storepass 080302 -keypass 080302

服务器要信任客户端证书,就必须把客户端证书添加为服务器的信任认证。由于不能直接将 PKCS12 格式的证书库导入,我们必须先把客户端证书导出为一个单独的 CER 文件,使用如下命令: 
keytool -export -alias MyPC -keystore C:keystoreuser.p12 -storetype PKCS12 -storepass 080302 -rfc -file C:keystoreuser.cer

接着,将C:user.cer导入到服务器的证书库,添加为一个信任证书: 
keytool -import -v -file C:keystoreuser.cer -keystore c:keystoreservertrust -alias user -storepass 080302

输入“是”确认完成。

通过list 命令查看: 
keytool -list -keystore c:\keystore\servertrust -storepass 080302

也可以考虑将服务器证书和服务器信任证书放到一个密钥库中

第四步:配置Tomcat 服务器

打开Tomcat 根目录下的 /conf/server.xml ,修改如下:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"

clientAuth="true" sslProtocol="TLS"

keystoreFile="C:\Java\Tomcat\conf\keystore\server" keystorePass="080302"

truststoreFile="C:\Java\Tomcat\conf\keystore\servertrust" truststorePass="080302"

/>

详细解释见本节最前面介绍。

安装个人证书user.p12(密码:080302)和服务器证书server.cer
到这里启动tomcat,输入 https://hepengfei:8443/Test,就OK了。

如果数字证书注册名称不是127.0.0.1,而是对应的一个hepengfei,

使用ip访问(https://127.0.0.1:8443/Test)可以进入选择数字证书界面(仿真格式):

选择数字证书

名称     颁发商

MyPC     MyPC

详细信息  查看证书

确定   取消

注意点:

keytool -list -v -keystore user

使用的库要privateKeyEntry

信任的库要trustedCertEntry

ConvertKeystoreType.java用于转换密钥库类型(PKCS12与JKS格式证书库转换工具)

ssl使用其中四个密钥库

https使用server、servertrust、user.p12(安装到本地计算机)、server.cer四个

生成证书请求:

keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file tomcat_server.csr -keypass 123456 -storepass 123456 -keystore server_keystore

PKCS12

使用Keytool列出pkcs12证书的内容
keytool -rfc -list -keystore tomcat_client.p12 -storetype pkcs12

使用Keytool导出pkcs12证书的公钥证书

keytool  -keystore tomcat_client.p12 -storetype pkcs12 -export -alias mypc -file mypc.cer

将已经签名的证书导入密钥库(覆盖原来的公钥)

先导入证书链中的相关信任证书,再导入已经签名的证书(别名与私钥证书别名保持一样)。

转载于:https://www.cnblogs.com/suncoolcat/p/3398049.html

keytool命令总结相关推荐

  1. Java Keytool 命令行工具

    Java Keytool 是什么? Keytool 是Java提供的密钥(Key)和证书(Certificate)管理工具,用于管理公钥/私钥对以及相关证书. Keytool是Java自带的工具,安装 ...

  2. keytool命令整理

    证书库中包含两种类型的证书,PrivateKeyEntry私钥证书,trustedCertEntry受信任的公钥证书 生成证书 keytool -genkey -v -alias gscrm -key ...

  3. 常用的keytool命令

    常用的keytool命令 导入证书 $ keytool -import -keystore server.keystore.jks -alias server -file server.pem 查看证 ...

  4. Linux keytool命令密钥和证书管理工具,生成ssl证书

    Linux keytool命令密钥和证书管理工具,生成ssl证书 keytool -genkey -alias tomcat8 -keyalg RSA -keystore /opt/tomcat8/c ...

  5. keytool命令制作CA根证书,签发二级证书

    关于TLS的一些基本信息我这里就不多说了,网上一搜一大堆.这里主要说一下,在tls单向认证里,怎么用keytool命令去制作CA证书,签发二级证书.双向认证也就是照着反方向做一遍就好了. 先附一张简单 ...

  6. 数字证书中keytool命令使用说明

    这个命令一般在JDK\jre\lib\security\目录下操作 keytool常用命令 -alias       产生别名 -keystore    指定密钥库的名称(就像数据库一样的证书库,可以 ...

  7. 如何使用Java keytool命令行创建一个自签名证书

    执行文件keytool.exe是JRE自带的工具,在windows系统一般位于文件夹c:\Program Files\Java\jre6\bin下面. 运行如下的命令行: keytool -genke ...

  8. Keytool命令详解(好文章!详细设置一些参数比如过期时间等)

    以前用过几次这个东东,但每次都重新查询一次.本文原始出处是这里 . ----------------------------------------------------------- Keytoo ...

  9. 【Linux】Linux 生成证书 keytool 命令找不到

    用Openssl生成证书,后来要涉及生成 java keytool 的 jks格式的证书,结果输入keytool bash: keytool: command not found... 结果找了半天才 ...

最新文章

  1. append函数_高质量python代码:考虑用生成器来改写直接返回列表的函数
  2. Summary of the Academic English Class
  3. 读取一个product全部数据的工具
  4. 走向REST:将Tomcat与Spring和JAX-RS嵌入(Apache CXF)
  5. C语言把文件空格删去,关于文件操作,碰到空格就换行
  6. shinelon笔记本进bios设置u盘启动_重装系统—BIOS设置 U盘启动
  7. 中国在计算机领域取得的成就,厉害了我的国——盘点中国科学近年有哪些成就...
  8. 肥猫学习笔记---C语言数据结构与算法(一)-----栈
  9. python完成非线性拟合
  10. 计算机教室架构,物联网智慧教室架构
  11. MYSQL数据库跨服务器实时同步更新实践----文献阅读(污水管网水质预测)
  12. 四川大学计算机学院软件工程期末,四川大学软件工程期末复习ppt
  13. Java Web关键字填空
  14. 通过案例理解 MQTT 主题与通配符
  15. 怎么使小数点后面的数可以读取
  16. 【Cocos creator】绘图系统:Graphics组件之动态改变生成图像的透明度
  17. 针对Win10中Win键+R运行没有历史记录解决方法
  18. windows mklink 使用 相对路径链接
  19. 科达正式发布晶艳二代小间距LED屏及显控平台新品
  20. Java解决递归栈溢出_Java解决栈溢出

热门文章

  1. CMake基础 第3节 静态库
  2. pytorch 之 有关交叉熵函数使用的几点说明
  3. 内联函数的定义可能不止一次
  4. 8086汇编-实验10-字符打印程序
  5. vscode给java项目传递args[]参数
  6. html设置excel打开新窗口,怎么在excel的大页面上设置第几页第几页的
  7. 超详细mysql left join,right join,inner join用法分析
  8. Tortoise SVN使用方法,简易图解
  9. visio如何扩大画布的大小. 鼠标移到画布的边界按住Ctrl,就可以拉大
  10. Drools与Spring集成 登录测试