{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
-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
[-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
[-sigalg
[-validity
[-keystore<密钥库>][-storepass<存储库口令>]
[-storetype<存储类型>][-providername<名称>]
[-providerclass<提供方类名称>[-providerarg<参数>]]...
[-providerpath<路径列表>]
-genseckey[-v][-protected]
[-alias<别名>][-keypass<密钥库口令>]
[-keyalg
[-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<参数>]]...