`
ancient_wind
  • 浏览: 40143 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Keytool学习笔记

    博客分类:
  • JAVA
阅读更多
Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书。

所有的数字证书是以一条一条(采用别名区别)的形式存入证书库的中。

证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条
证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。

Keytool 把钥匙和证书储存到一个keystore.默任的实现keystore的是一个文件.它用一个密码保护钥匙.

支持的算法和钥匙大小:
Keytool允许用户指定钥匙对和注册密码服务供应者所提供的签名算法。缺省钥匙对产生算法是“DSA”。假如私有钥匙是“DSA”类型,缺省签名算法是“SHA1withDSA”;假如私有钥匙是“RSA”类型,缺省算法是“MD5withRSA”。
当产生一个DSA钥匙对,钥匙必须在512-1024位之间,对任何算法缺省钥匙大小是1024位。

关于证书的几个概念:
公共钥匙 :是一个详细的实体的数字关联,并有意让所有想同这个实体发生信任关系的其他实体知道.公共钥匙用来检验签名;
数字签名:是实体信息用实体的私有钥匙签名(加密)后的数据.这条数据可以用这个实体的公共钥匙来检验签名(解密)出实体信息以鉴别实体的身份;       
签名:用实体私有钥匙加密某些消息,从而得到加密数据;
私有钥匙:是一些数字,私有和公共钥匙存在所有用公共钥匙加密的系统的钥匙对中.公共钥匙用来加密数据,私有钥匙用来计算签名.公钥加密的消息只能用私钥解密,私钥签名的消息只能用公钥检验签名。

例子:为web服务生成一对JKS文件:
keytool  -genkey -alias server_certs -validity 365 -keyalg RSA -keysize 1024 -

keystore server_keystore.jks
keytool -export -keystore server_keystore.jks -alias server_certs -file

server.cer
keytool  -genkey -alias client_certs -validity 365 -keyalg RSA -keysize 1024 -

keystore client_keystore.jks
keytool -export -keystore client_keystore.jks -alias client_certs -file

client.cer
keytool -import -trustcacerts -keystore client_keystore.jks -file server.cer -

alias servercert
keytool -import -trustcacerts -keystore server_keystore.jks -file client.cer -

alias clientcert
实体:一个实体可以是一个人,一个组织,一个程序,一台计算机,一个商业,一个银行,或其他你想信任的东西。

具体操作:
1.新建 keytool -genkey -alias name -keypass password -keyalg RSA -validity 7 -keystore prac.keystore -providerpath D:\keytool
  修改密码 keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass

2.查看 keytool -list -v -keystore prac.keystore -alias baidu

3.输出keystore到一个文件:testkey:
keytool -export -keystore prac.keystore -alias duke -rfc -file testkey
(保存在文件中的认证;Certicate stored in file)
  查看该文件:keytool -printcert -file testkey

4.输入证书到一个新的truststore:
keytool -import -alias dukecert -file testkey -keystore truststore

    我们也可以用如下命令生成一个自签名的证书:
keytool -genkey dname "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN" -alias myCA -keyalg RSA -keysize 1024 -keystore myCALib -keypass 654321 -storepass 123456 -validity 3650
    这条命令将生成一个别名为myCA的自签名证书,证书的keypair的密码为654321,证书中实体信息为 "CN=fingki,OU=server,O=server,L=bj,ST=bj,C=CN",存储在名为myCALib的keystore中(如果没有将自动生成一个),这个keystore的密码为123456,密钥对产生的算法指定为RSA,有效期为10年。
分享到:
评论

相关推荐

    SSl双向认证学习笔记  .doc

    SSL双向认证学习笔记 本文档主要介绍SSL双向认证的一些知识,涵盖了基础知识、keytool命令、...SSL双向认证学习笔记涵盖了基础知识、keytool命令、openssl安装等方面,旨在帮助读者了解SSL双向认证的原理和实现方法。

    java之jvm学习笔记八(实践对jar包的代码签名)

    在命令行中,可以使用`keytool`工具创建一个新的密钥库(keystore)并生成一对密钥。例如: ```bash keytool -genkeypair -alias mykey -keyalg RSA -keystore myKeystore.jks ``` 这里的`-alias`参数定义了密钥...

    app逆向学习相关笔记

    【app逆向学习相关笔记】 在移动应用开发和安全领域,app逆向工程是一个重要的实践环节,它涉及对已安装应用程序的分析,以理解其工作原理、查找潜在漏洞或提取敏感信息。本笔记主要介绍了使用adb命令进行app逆向...

    个人学习Java安全的笔记.zip

    这个“个人学习Java安全的笔记.zip”压缩包文件,很可能包含了一位学习者在研究Java安全特性、漏洞防范以及最佳实践时所记录的资料。以下是基于Java安全的一些关键知识点的详细说明: 1. **Java安全模型**:Java的...

    android签名版

    1. 创建密钥库:开发者使用`keytool`命令行工具或Android Studio内的界面创建一个密钥库,这是一个存储私钥和证书的文件。 2. 生成密钥:在密钥库中,开发者需要生成一对密钥,包括一个私钥和一个公钥。私钥用于...

Global site tag (gtag.js) - Google Analytics