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

阅读:411 2019-03-19 14:43:36 来源:新网

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

命令可以如下:keytool-import-keystorecacerts-storepass666666-keypass888888-aliasalibabacert-filec:alibabajavacerttest_root.cer其中-keystorecacerts中的cacerts是jre中默认的证书库名字,也可以使用其它名字-storepass666666中的666666是这个证书库的密码-keypass888888中的888888是这个特定证书的密码-aliasalibabacert中的alibabacert是你导入证书的别名,在其它操作命令中就可以使用它-filec:alibabajavacerttest_root.cer中的文件路径就是要导入证书的路径

,可以使用如下命令:keytool-list-v-aliasalibabacert-keystorecacerts-storepass666666

,可以使用如下命令:keytool-delete-aliasalibabacert-keystorecacerts-storepass666666

,可以使用如下命令:keytool-export-keystorecacerts-storepass666666-aliasalibabacert-filef:alibabacert_root.cer

(注意:有些数字认证没有私有密码,只有公匙,这种情况此命令无效)这个是交互式的,在输入命令后,会要求你输入密码keytool-keypasswd-aliasalibabacert-keystorecacerts这个不是交互式的,输入命令后直接更改keytool-keypasswd-aliasalibabacert-keypass888888-new123456-storepass666666-keystorecacerts

owner:cn=boctestca,o=boctest,c=cn

issuer:cn=boctestca,o=boctest,c=cn

serialnumber:31e60001

validfrom:tueoct2816:54:26cst2008until:satoct2816:54:26cst2028

certificatefingerprints:

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

signaturealgorithmname:sha1withrsa

version:3

extensions:

#1:objectid:2.5.29.19criticality=true

basicconstraints:[

ca:true

pathlen:2147483647

]

#2:objectid:2.5.29.15criticality=false

keyusage[

digitalsignature

non_repudiation

key_encipherment

data_encipherment

key_agreement

key_certsign

crl_sign

]

#3:objectid:2.5.29.14criticality=false

subjectkeyidentifier[

keyidentifier[

0000:e38166007bc98f3f5a77e06d5ceb4142..f....?zw.m.ab

0010:c7485a10.hz.

]

]

#4:objectid:1.3.6.1.5.5.7.1.1criticality=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.31criticality=false

crldistributionpoints[

[distributionpoint:

[cn=crl1,ou=crl,o=boctest,c=cn]

]]

#6:objectid:2.5.29.32criticality=false

certificatepolicies[

[certificatepolicyid:[2.5.29.32.0]

[policyqualifierinfo:[

qualifierid:1.3.6.1.5.5.7.2.1

qualifier:0000:161e687474703a2f2f3138322e313139..http://1

82.119

0010:2e3137312e3130362f6370732e68746d.171.106/cps.htm

]]]

]

#7:objectid:2.16.840.1.113730.1.1criticality=false

netscapecerttype[

sslca

s/mimeca

objectsigningca]

#8:objectid:2.5.29.35criticality=false

authoritykeyidentifier[

keyidentifier[

0000:e38166007bc98f3f5a77e06d5ceb4142..f....?zw.m.ab

0010:c7485a10.hz.

]

]

trustthiscertificate?[no]:yes

certificatewasaddedtokeystore

[root@orange3cbin]#

note:(xp:%java_home%/jre/lib/security/cacerts,linux:$java_home/jre/lib/security/cacerts)

验证是否已创建过同名的证书keytool-list-v-aliastomcat-keystore"%java_home%/jre/lib/security/cacerts"-storepasschangeit

keytool-delete-aliastomcat-keystore"%%java_home%/jre/lib/security/cacerts"-storepasschangeit

keytool是一个java数据证书的管理工具。keystore

keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:密钥实体(keyentity)——密钥(secretkey)又或者是私钥和配对公钥(采用非对称加密)可信任的证书实体(trustedcertificateentries)——只包含公钥alias(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写keystore的存储位置在没有制定生成位置的情况下,keystore会存在与用户的系统默认目录,如:对于windowxp系统,会生成在系统的c:documentsandsettingsusername文件名为“.keystore”keystore的生成

引用

keytool-genkey-aliastomcat-keyalgrsa-keystored:mykeystore-dname"cn=localhost,ou=localhost,o=localhost,l=sh,st=sh,c=cn"-keypasschangeit-storepass-validity180参数说明:-genkey表示要创建一个新的密钥-dname表示密钥的distinguishednames,cn=commonnameou=organizationunito=organizationnamel=localitynames=statenamec=countrydistinguishednames表明了密钥的发行者身份-keyalg使用加密的算法,这里是rsa-alias密钥的别名-keypass私有密钥的密码,这里设置为changeit-keystore密钥保存在d:盘目录下的mykeystore文件中-storepass存取密码,这里设置为changeit,这个密码提供系统从mykeystore文件中将信息取出-validity该密钥的有效期为180天(默认为90天)cacerts证书文件(thecacertscertificatesfile)

该证书文件存在于java.homejrelibsecurity目录下,是java系统的ca证书仓库

1.服务器中生成证书:(注:生成证书时,cn要和服务器的域名相同,如果在本地测试,则使用localhost)keytool-genkey-aliastomcat-keyalgrsa-keystored:mykeystore-dname"cn=localhost,ou=localhost,o=localhost,l=sh,st=sh,c=cn"-keypasschangeit-storepasschangeit

由客户端安装:keytool-export-aliastomcat-keystored:mykeystore-filed:mycerts.cer-storepasschangeit

为客户端的jvm导入密钥(将服务器下发的证书导入到jvm中)keytool-import-trustcacerts-aliastomcat-keystore"%java_home%/jre/lib/security/cacerts"-filed:mycerts.cer-storepasschangeit生成的证书可以交付客户端用户使用,用以进行ssl通讯,或者伴随电子签名的jar包进行发布者的身份认证。

常出现的异常:“未找到可信任的证书”--主要原因为在客户端未将服务器下发的证书导入到jvm中,可以用keytool-list-aliastomcat-keystore"%java_home%/jre/lib/security/cacerts"-storepasschangeit

linux:#keytool-list-aliastomcat-keystore"$java_home/jre/lib/security/cacerts"-storepasschangeit来查看证书是否真的导入到jvm中。

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

keytool错误:java.io.ioexception:keystorewastamperedwith,orpasswordwasincorrect

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

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

keytool用法:

-certreq[-v][-protected]

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

[-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][-keysize<密钥大小>]

[-sigalg][-dname]

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

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

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

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

[-providerpath<路径列表>]

-genseckey[-v][-protected]

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

[-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<参数>]]...

相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服