`

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

阅读更多
这个命令一般在JDK\jre\lib\security\目录下操作
keytool常用命令
-alias       产生别名
-keystore    指定密钥库的名称(就像数据库一样的证书库,可以有很多个证书,cacerts这个文件是jre自带的,
             你也可以使用其它文件名字,如果没有这个文件名字,它会创建这样一个)
-storepass   指定密钥库的密码
-keypass     指定别名条目的密码
-list        显示密钥库中的证书信息
-v           显示密钥库中的证书详细信息
-export      将别名指定的证书导出到文件
-file        参数指定导出到文件的文件名
-delete      删除密钥库中某条目
-import      将已签名数字证书导入密钥库
-keypasswd   修改密钥库中指定条目口令
-dname       指定证书拥有者信息
-keyalg      指定密钥的算法
-validity    指定创建的证书有效期多少天
-keysize     指定密钥长度

使用说明:
导入一个证书命令可以如下:
keytool -import -keystore cacerts -storepass 666666 -keypass 888888 -alias alibabacert -file C:\alibabajava\cert\test_root.cer
其中-keystore cacerts中的cacerts是jre中默认的证书库名字,也可以使用其它名字
-storepass 666666中的666666是这个证书库的密码
-keypass 888888中的888888是这个特定证书的密码
-alias alibabacert中的alibabacert是你导入证书的别名,在其它操作命令中就可以使用它
-file C:\alibabajava\cert\test_root.cer中的文件路径就是要导入证书的路径

浏览证书库里面的证书信息,可以使用如下命令:
keytool -list -v -alias alibabacert -keystore cacerts -storepass 666666

要删除证书库里面的某个证书,可以使用如下命令:
keytool -delete -alias alibabacert -keystore cacerts -storepass 666666

要导出证书库里面的某个证书,可以使用如下命令:
keytool -export -keystore cacerts -storepass 666666 -alias alibabacert -file F:\alibabacert_root.cer

要修改某个证书的密码(注意:有些数字认证没有私有密码,只有公匙,这种情况此命令无效)
这个是交互式的,在输入命令后,会要求你输入密码
keytool -keypasswd -alias alibabacert -keystore cacerts
这个不是交互式的,输入命令后直接更改
Keytool -keypasswd -alias alibabacert -keypass 888888 -new 123456 -storepass 666666 -keystore cacerts

以上转自:http://fruitking.javaeye.com/blog/435971



Owner: CN=BOCTestCA, O=BOCTest, C=CN
Issuer: CN=BOCTestCA, O=BOCTest, C=CN
Serial number: 31e60001
Valid from: Tue Oct 28 16:54:26 CST 2008 until: Sat Oct 28 16:54:26 CST 2028
Certificate fingerprints:
         MD5:  F0:35:F9:69:31:AE:87:01:6C:2D:56:BD:02:0A:16:4A
         SHA1: 24:EF:84:14:4E:BD:0D:37:59:2D:70:28:79:10:88:EA:0A:06:13:20
         Signature algorithm name: SHA1withRSA
         Version: 3

Extensions:

#1: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
  CA:true
  PathLen:2147483647
]

#2: ObjectId: 2.5.29.15 Criticality=false
KeyUsage [
  DigitalSignature
  Non_repudiation
  Key_Encipherment
  Data_Encipherment
  Key_Agreement
  Key_CertSign
  Crl_Sign
]

#3: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: E3 81 66 00 7B C9 8F 3F   5A 77 E0 6D 5C EB 41 42  ..f....?Zw.m\.AB
0010: C7 48 5A 10                                        .HZ.
]
]

#4: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
AuthorityInfoAccess [
  [
   accessMethod: 1.3.6.1.5.5.7.48.1
   accessLocation: URIName: http://182.119.171.106:12333/]
]

#5: ObjectId: 2.5.29.31 Criticality=false
CRLDistributionPoints [
  [DistributionPoint:
     [CN=crl1, OU=crl, O=BOCTest, C=CN]
]]

#6: ObjectId: 2.5.29.32 Criticality=false
CertificatePolicies [
  [CertificatePolicyId: [2.5.29.32.0]
[PolicyQualifierInfo: [
  qualifierID: 1.3.6.1.5.5.7.2.1
  qualifier: 0000: 16 1E 68 74 74 70 3A 2F   2F 31 38 32 2E 31 31 39  ..http://1
82.119
0010: 2E 31 37 31 2E 31 30 36   2F 63 70 73 2E 68 74 6D  .171.106/cps.htm

]]  ]
]

#7: ObjectId: 2.16.840.1.113730.1.1 Criticality=false
NetscapeCertType [
   SSL CA
   S/MIME CA
   Object Signing CA]

#8: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: E3 81 66 00 7B C9 8F 3F   5A 77 E0 6D 5C EB 41 42  ..f....?Zw.m\.AB
0010: C7 48 5A 10                                        .HZ.
]

]

Trust this certificate? [no]:  yes
Certificate was added to keystore
[root@orange3c bin]#


NOTE: (xp: %JAVA_HOME%/jre/lib/security/cacerts,  linux: $JAVA_HOME/jre/lib/security/cacerts)

验证是否已创建过同名的证书
keytool -list -v -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts " -storepass changeit


删除已创建的证书
keytool -delete -alias tomcat -keystore "%%JAVA_HOME%/jre/lib/security/cacerts " -storepass changeit

Keytool是一个Java数据证书的管理工具。
keystore

Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中
在keystore里,包含两种数据: 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
                                               可信任的证书实体(trusted certificate entries)——只包含公钥

Alias(别名)
每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写

keystore的存储位置
在没有制定生成位置的情况下,keystore会存在与用户的系统默认目录,
如:对于window xp系统,会生成在系统的C:\Documents and Settings\UserName\
文件名为“.keystore”

keystore的生成

引用
keytool -genkey -alias tomcat -keyalg RSA   -keystore d:\mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass -validity 180

参数说明:
-genkey表示要创建一个新的密钥
-dname表示密钥的Distinguished Names,
CN=commonName
OU=organizationUnit
O=organizationName
L=localityName
S=stateName
C=country
Distinguished Names表明了密钥的发行者身份
-keyalg使用加密的算法,这里是RSA
-alias密钥的别名
-keypass私有密钥的密码,这里设置为changeit
-keystore 密钥保存在D:盘目录下的mykeystore文件中
-storepass 存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出
-validity该密钥的有效期为 180天 (默认为90天)

cacerts证书文件(The cacerts Certificates File)
该证书文件存在于java.home\jre\lib\security目录下,是Java系统的CA证书仓库

创建证书
1.服务器中生成证书:(注:生成证书时,CN要和服务器的域名相同,如果在本地测试,则使用localhost)
keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass changeit
2.导出证书,由客户端安装:
keytool -export -alias tomcat -keystore d:\mykeystore -file d:\mycerts.cer -storepass changeit
3.客户端配置:为客户端的JVM导入密钥(将服务器下发的证书导入到JVM中)
keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts " -file d:\mycerts.cer -storepass changeit
生成的证书可以交付客户端用户使用,用以进行SSL通讯,或者伴随电子签名的jar包进行发布者的身份认证。

常出现的异常:“未找到可信任的证书”--主要原因为在客户端未将服务器下发的证书导入到JVM中,可以用
keytool -list -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -storepass changeit
linux: #keytool -list -alias tomcat -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit
来查看证书是否真的导入到JVM中。


keytool生成根证书时出现如下错误:

keytool错误:java.io.IOException:keystore was tampered with,or password was incorrect

原因是在你的home目录下是否还有.keystore存在。如果存在那么把他删除掉,然后再执行

或者删除"%JAVA_HOME%/jre/lib/security/cacerts 再执行





keytool 用法:

-certreq     [-v] [-protected]

             [-alias <别名>] [-sigalg <sigalg>]

             [-file <csr_file>] [-keypass <密钥库口令>]

             [-keystore <密钥库>] [-storepass <存储库口令>]

             [-storetype <存储类型>] [-providername <名称>]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]



-changealias [-v] [-protected] -alias <别名> -destalias <目标别名>

             [-keypass <密钥库口令>]

             [-keystore <密钥库>] [-storepass <存储库口令>]

             [-storetype <存储类型>] [-providername <名称>]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]



-delete      [-v] [-protected] -alias <别名>

             [-keystore <密钥库>] [-storepass <存储库口令>]

             [-storetype <存储类型>] [-providername <名称>]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]



-exportcert  [-v] [-rfc] [-protected]

             [-alias <别名>] [-file <认证文件>]

             [-keystore <密钥库>] [-storepass <存储库口令>]

             [-storetype <存储类型>] [-providername <名称>]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]



-genkeypair  [-v] [-protected]

             [-alias <别名>]

             [-keyalg <keyalg>] [-keysize <密钥大小>]

             [-sigalg <sigalg>] [-dname <dname>]

             [-validity <valDays>] [-keypass <密钥库口令>]

             [-keystore <密钥库>] [-storepass <存储库口令>]

             [-storetype <存储类型>] [-providername <名称>]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]



-genseckey   [-v] [-protected]

             [-alias <别名>] [-keypass <密钥库口令>]

             [-keyalg <keyalg>] [-keysize <密钥大小>]

             [-keystore <密钥库>] [-storepass <存储库口令>]

             [-storetype <存储类型>] [-providername <名称>]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]



-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]

             [-alias <别名>]

             [-file <认证文件>] [-keypass <密钥库口令>]

             [-keystore <密钥库>] [-storepass <存储库口令>]

             [-storetype <存储类型>] [-providername <名称>]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]



-importkeystore [-v]

             [-srckeystore <源密钥库>] [-destkeystore <目标密钥库>]

             [-srcstoretype <源存储类型>] [-deststoretype <目标存储类型>]

             [-srcstorepass <源存储库口令>] [-deststorepass <目标存储库口令>]

             [-srcprotected] [-destprotected]

             [-srcprovidername <源提供方名称>]

             [-destprovidername <目标提供方名称>]

             [-srcalias <源别名> [-destalias <目标别名>]

               [-srckeypass <源密钥库口令>] [-destkeypass <目标密钥库口令>]]

             [-noprompt]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]



-keypasswd   [-v] [-alias <别名>]

             [-keypass <旧密钥库口令>] [-new <新密钥库口令>]

             [-keystore <密钥库>] [-storepass <存储库口令>]

             [-storetype <存储类型>] [-providername <名称>]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]



-list        [-v | -rfc] [-protected]

             [-alias <别名>]

             [-keystore <密钥库>] [-storepass <存储库口令>]

             [-storetype <存储类型>] [-providername <名称>]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]



-printcert   [-v] [-file <认证文件>]



-storepasswd [-v] [-new <新存储库口令>]

             [-keystore <密钥库>] [-storepass <存储库口令>]

             [-storetype <存储类型>] [-providername <名称>]

             [-providerclass <提供方类名称> [-providerarg <参数>]] ...

             [-providerpath <路径列表>]

转自 http://www.cnblogs.com/benio/archive/2010/09/15/1826990.html
分享到:
评论

相关推荐

    Keytool与数字证书

    ### Keytool与数字证书 #### 一、Keytool简介及基本操作 **Keytool** 是 Java 开发工具包(JDK)中的一个实用程序,用于管理密钥库(key stores),其中包括私钥(private keys)及其对应的公钥证书(public key ...

    Linux命令keytool命令 – 密钥和证书管理工具.docx

    `keytool`是Java开发工具包(JDK)的一部分,主要功能是管理和操作密钥对和数字证书。这个工具在Linux和其他操作系统上广泛用于安全配置,特别是在构建HTTPS服务器、SSL/TLS连接以及进行数字签名等方面。以下是关于`...

    keytool使用说明

    "Keytool 使用说明" Keytool 是安全钥匙和证书的管理工具,管理一个存储了私有钥匙和验证相应公共钥匙的和他们相关联的 X.509 证书链的 keystore(相当一个数据库)。Keytool 是个有效的安全钥匙和证书的管理工具。...

    keytool查询apk证书指纹.zip

    `keytool`是Java开发工具包(JDK)中提供的一个命令行工具,用于管理和创建密钥对以及数字证书,包括查询APK的签名信息。本篇将详细讲解如何使用`keytool`来查询APK的证书指纹,包括MD5、SHA1和SHA256等安全摘要算法...

    https证书生成工具(openssl和jre(自带keytool)) for windows.rar

    - **生成自签名证书**:可以使用`keytool -genkeypair`命令生成自签名证书,例如`keytool -genkeypair -alias mycert -keyalg RSA -keystore keystore.jks`,这会在keystore.jks中创建一个名为mycert的证书。...

    在tomcat中使用keytool实现双向验证操作视频

    本教程将详细讲解如何在Tomcat中利用Java自带的keytool工具来生成并配置数字证书,实现双向验证操作。 首先,我们要理解什么是双向认证。在单向认证中,服务器会向客户端展示其数字证书,证明自己的身份,而客户端...

    数字证书生成

    数字证书生成doc命令 1.1生成服务端证书 开始-运行-CMD-在dos窗口执行下执行命令: keytool -genkey -v -alias tomcat -keyalg RSA -keystore C:/self-file/server/tomcat.keystore -dname "CN=127.0.0.1,OU=zlj,...

    keytool-密钥和证书管理工具[参照].pdf

    结构 keytool [ 命令] 说明keytool 是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。 keytool 的...

    keytool-importkeypair.zip

    1. **密钥对(Key Pair)**:在数字证书中,密钥对由一对非对称密钥组成,包括一个公钥和一个私钥。公钥用于加密数据,而私钥用于解密。在Android应用发布中,开发者使用私钥进行签名,公钥则用于验证签名的合法性。...

    JDK&nbsp;&nbsp;keytool证书工具功能代码解析

    JDK的keytool工具是Java开发工具包中用于管理和操作密钥对以及数字证书的命令行工具。它在网络安全和HTTPS通信中起着至关重要的作用,因为这些通常依赖于SSL/TLS协议,而该协议需要公钥基础设施(PKI)中的证书来...

    系统签名工具keytool-importkeypair.zip

    `keytool`是Java开发工具集的一部分,它提供了管理和创建密钥对、数字证书以及存储这些密钥对的密钥库的功能。`importkeypair`可能是keytool的一个自定义脚本或者命令,用于简化导入密钥对到密钥库的过程。在Android...

    服务器证书配置指南之Jetty-61-CNNIC终版.pdf

    2.2节接着说明如何使用keytool生成CSR(Certificate Signing Request),这是一个包含了公开密钥和服务器信息的数据文件,用于向证书颁发机构(CA,如CNNIC)申请数字证书。 【下载服务器证书】在3.1节中,需要提供...

    java数字签名(可用)

    在Java中,`keytool`也可以帮助完成这些任务,例如`-importcert`命令用于导入证书,`-exportcert`用于导出证书。 总的来说,Java数字签名提供了强大的安全功能,确保了在网络通信中的数据安全和身份认证。理解并...

    java数字签名的讲解

    在 Java 平台上,我们可以使用内置的 Keytool 和 Jarsigner 工具来实现数字签名的操作。以下是对这个主题的详细讲解: 一、数字签名的概念 数字签名并非我们日常生活中的笔迹签名,而是一种电子形式的签名,它结合...

    单点登录实

    1. **命令说明**:使用`keytool`命令生成证书,命令格式如下: ```shell keytool -genkey -alias &lt;alias_name&gt; -keyalg RSA -keystore ``` 其中: - `-alias`:指定证书别名。 - `-keyalg`:指定加密算法。...

    APKTool.zip

    首先,"keytool-importkeypair"是Java的keytool命令的一个实例,用于导入密钥对到密钥库。在Android应用发布时,开发者通常需要生成一个数字证书来签署APK,以确保应用的完整性和来源的可信性。keytool是Java ...

    Windows +tomcat +SSL

    数字证书由可信的第三方——证书颁发机构(CA)签发,用于确保公钥的所有者就是证书上所标识的人或实体。 4. **Keystore**:存放证书和密钥的地方,可以视为一个容器,用来管理私钥及其相关的公钥证书。 5. **Trust...

    tomcat配置https说明文档

    为了确保Tomcat服务器能够支持HTTPS协议,首先需要为服务器生成一个数字证书。这一步非常重要,因为它涉及到数据加密和身份验证等安全机制。 ##### 1.1 生成证书的步骤 1. **打开命令行界面**: - 在命令行中,先...

    在eclipse中将android工程打包成apk.pdf

    运行该命令后,系统会提示输入密码以及一系列个人信息(如姓名、组织名称等),这些信息将用于创建数字证书。命令执行完成后,会在当前目录下生成`android.keystore`文件。 #### 二、使用Eclipse生成APK 完成了...

Global site tag (gtag.js) - Google Analytics