




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
密钥和证书管理工具 全keytool-密钥和证书管理工具(全)2010-06-11 10:36管理由私钥和认证相关公钥的X.509证书链组成的密钥仓库(数据库)。还管理来自可信任实体的证书。结构keytool命令说明keytool是个密钥和证书管理工具。他使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性连同认证服务。他还允许用户储存他们的通信对等者的公钥(以证书形式)。证书是来自一个实体(个人、公司等)的经数字签名的声明,他声明某些其他实体的公钥(及其他信息)具备某一的特定值(参见证书)。当数据被数字化签名后,校验签名即可检查数据的完整性和真实性。完整性的意思是数据没有被修改或损坏过,真实性的意思是数据的确是来自声称创建了该数据和对他进行了签名的实体。keytool将密钥和证书储存在一个所谓的密钥仓库中。缺省的密钥仓库实现将密钥仓库实现为一个文档。他用口令来保护私钥。jarsigner工具利用密钥仓库中的信息来产生或校验Java存档(JAR)文档的数字签名(JAR文档将类文档、图象、声音和/或其他数字化数据打包在一个文档中)。jarsigner用JAR文档所附带的证书(包含于JAR文档的签名块文档中)来校验JAR文档的数字签名,然后检查该证书的公钥是否可信任,即是否包括在指定的密钥仓库中。www.bitsCN.com请注意:keytool和jarsigner工具完全取代了JDK 1.1中提供的javakey工具。这些新工具所提供的功能比javakey提供的多,包括能够用口令来保护密钥仓库和私钥,连同除了能够生成签名外还能够校验他们。新的密钥仓库体系结构取代了javakey所创建和管理的身份数据库。能够利用-identitydb keytool命令将信息从身份数据库导入密钥仓库。密钥仓库项在密钥仓库中有两种不同类型的项:密钥项-每项存放极为敏感的加密密钥信息,这种信息以一种受保护的格式储存以防止未授权的访问。通常,储存在这类项中的密钥是机密密钥,或是伴有用于认证相应公钥用的证书链的私钥。keytool和jarsigner工具只处理后一类型的项,即私钥及其关联的证书链。可信任的证书项-每项包含一个属于另一团体的公钥证书。他之所以叫做可信任的证书,是因为密钥仓库的拥有者相信证书中的公钥确实属于证书主体(拥有者)识别的身份。证书签发人通过对证书签名来确保这点。密钥仓库使用的别名对任何的密钥仓库项(密钥项和可信任的证书项)的访问都要通过唯一的别名来进行。别名不区分大小写,即别名Hugo和hugo指的是同一密钥仓库项。当用-genkey命令来生成密钥对(公钥和私钥)或用-import命令来将证书或证书链加到可信任证书的清单中,以增加一个实体到密钥仓库中,必须指定了一个别名。后续keytool命令必须使用这一相同的别名来引用该实体。www.bitsCN.com例如,假设您用别名duke生成了新的公钥/私钥密钥对并将公钥用以下命令打包到自签名证书中(参见证书链):?keytool-genkey-alias duke-keypass dukekeypasswd这指定了一个初始口令dukekeypasswd,接下来的命令都要使用该口令才能访问和别名duke相关联的私钥。以后假如您想更改duke的私钥口令,可用类似下述的命令:?keytool-keypasswd-alias duke-keypass dukekeypasswd-new newpass这将把口令从dukekeypasswd改为newpass。请注意:实际上,除非是作为测试目的或是在安全的系统上,否则不应在命令行或脚本中指定口令。假如没有在命令行上指定所需要的口令选项,您将会得到需要输入口令的提示。当在口令提示符下键入口令时,口令将被实时显示出来(键入什么就显示什么),因此,要小心,不要当着任何人的面键入口令。密钥仓库位置每个keytool命令都有一个-keystore选项,用于指定keytool管理的密钥仓库的永久密钥仓库文档名称及其位置。缺省情况下,密钥仓库储存在用户宿主目录(由系统属性的user.home决定)中名为.keystore的文档中。在Solaris系统中user.home缺省为用户的宿主目录。bitsCN.Com密钥仓库的创建当用-genkey、-import或-identitydb命令向某个尚不存在的密钥仓库添加数据时,就创建了一个密钥仓库。具体地说,假如在-keystore选项中指定了一个并不存在的密钥仓库,则该密钥仓库将被创建。假如不指定-keystore选项,则缺省密钥仓库将是宿主目录中名为.keystore的文档。假如该文档并不存在,则他将被创建。密钥仓库实现java.security包中提供的KeyStore类为访问和修改密钥仓库中的信息提供了相当固定的接口。能够有多个不同的具体实现,其中每个实现都是对某个特定类型的密钥仓库的具体实现。现在,有两个命令行工具(keytool和jarsigner)连同一个名为Policy Tool的基于GUI的工具使用密钥仓库实现。由于密钥仓库是公用的,JDK用户可利用他来编写其他的安全性应用程式。Sun Microsystems公司提供了一个内置的缺省实现。他利用名为JKS的专用密钥仓库类型(格式),将密钥仓库实现为一个文档。他用个人口令保护每个私钥,也用口令(可能为另一个口令)保护整个密钥仓库的完整性。密钥仓库的实现基于提供者(provider)。更具体地说,由密钥仓库所提供的应用程式接口是借助于服务提供者接口(SPI)来实现的。也就是说,在java.security包中更有一个对应的抽象KeystoreSpi类,他定义了提供者必须实现的服务提供者接口方法。(术语提供者指的是个或一组包,这个或这组包提供了一部份可由Java安全API访问的服务子集的具体实现。因此,要提供某个密钥仓库实现,客户机必须实现一个提供者并实现KeystoreSpi子类,如怎样为Java加密体系结构实现Provider中所述。BBS.bitsCN.com网管论坛通过使用KeyStore类中提供的getInstance工厂方法,应用程式可从不同的提供者中挑选不同类型的密钥仓库实现。密钥仓库类型定义密钥仓库信息的存储和数据格式,连同用于保护密钥仓库中的私钥和密钥仓库自身完整性的算法。不同类型的密钥仓库实现是不兼容的。keytool使用基于文档的密钥仓库实现(他把在命令行中传递给他的密钥仓库位置当成文档名处理并将之转换为文档输入流,从该文档输入流中加载密钥仓库信息)。另一方面,jarsigner和policytool工具可从任何可用URL指定的位置读取某个密钥仓库。对于keytool和jarsigner,可在命令行用-storetype选项指定密钥仓库类型。对于Policy Tool,可通过编辑菜单中的更改密钥仓库命令来指定密钥仓库类型。假如没有明确指定一个密钥仓库类型,这些工具将只是根据安全属性文档中指定的keystore.type属性值来选择密钥仓库实现。安全属性文档名为java.security,他位于JDK安全属性目录java.home/lib/security中,其中java.home为JDK的安装目录。每个工具都先获取keystore.type的值,然后检查任何当前已安装的提供者直到找到一个实现所需要类型的密钥仓库的实现为止。然后就使用该提供者的密钥仓库实现。www.bitsCN.com KeyStore类定义了一个名为getDefaultType的静态方法,他可让应用程式或applet检索keystore.type属性的值。以下代码将创建缺省密钥仓库类型(此类型由keystore.type属性所指定。)的一个实例:?KeyStore keyStore=KeyStore.getInstance(KeyStore.getDefaultType();缺省的密钥仓库类型是jks(这是由SUN提供者提供的密钥仓库实现的专用类型)。他在安全性属性文档中由下行进行指定:?keystore.type=jks要让工具使用不同于缺省类型的密钥仓库实现,可更改此行,指定不同的密钥仓库类型。例如,假如您有一个这样的提供者包,他给出一个名为pkcs12的密钥仓库类型的密钥仓库实现,则可将上面那行改为:?keystore.type=pkcs12注意:密钥仓库类型的命名中大小写无关紧要。例如,JKS将被认为是和jks相同的。支持的算法和密钥大小keytool允许用户指定任何注册了的加密服务提供者所提供的密钥对生成和签名算法。也就是说,各种命令中的keyalg和sigalg选项必须得到提供者的实现的支持。缺省的密钥对生成算法是DSA。签名算法是从所涉及私钥的算法推导来的:假如所涉及的私钥是DSA类型,则缺省的签名算法为SHA1withDSA,假如所涉及的私钥是RSA类型,则缺省的签名算法为MD5withRSA。bbs.bitsCN.com在生成DSA密钥对时,密钥大小的范围必须在512到1024位之间,且必须是64的倍数。缺省的密钥大小为1024位。证书证书(也叫公钥证书)是来自某个实体(签发人)的经数字签名的声明,他声明另一实体(主体)的公钥(及其他信息)具备某一特定的值。下面周详解释本句中使用的主要术语:公钥是和特定实体相关联的数字。任何需要和该实体进行信任交互的人都应知道该数字。公钥用于校验签名。经数字签名假如某些数据经数字签名,说明他们已和某一实体的身份存储在一起,而且证实该实体的签名知道这些数据。通过用该实体的私钥进行绘制,这些数据就是不可伪造的了。身份用于声明实体的一种手段。某些系统中,身份是公钥,而在另一些系统中则能够是Unix UID、电子邮件地址或X.509特征名等等。签名所谓签名,就是用实体的(签名人,在证书中也称为签发人)私钥对某些数据进行计算。私钥是一些数字,每个数字都应仅被以该数字作为私钥的特定实体所知(即该数字应保密)。在任何公钥密码系统中,私钥和公钥均成对出现。在DSA等具体的公钥密码系统中,一个私钥只对应一个公钥。私钥用于计算签名。www_bitscn_com实体实体是您在某种程度上对其加以信任的个人、组织、程式、电脑、企业、银行等。通常,公钥密码系统需要访问用户的公钥。在大型连网环境中,并不能确保通信实体之间已预先建立起关系,也无法确保受信任的储存库和所用的公钥都存在。于是人们发明了证书作为公钥分配问题的解决办法。现在,认证机构(CA)可充当可信任的第三方。CA是可信任的向其他实体签名(发放)证书的实体(例如企业)。由于CA受法律协议约束,因此可认为他们只提供可靠有效的证书。公共认证机构数量很多,例如VeriSign、Thawte、Entrust等等。您还能够使用诸如Netscape/Microsoft Certificate Servers或Entrust CA等产品来自己运营认证机构。使用keytool能够显示、导入和导出证书。还能够产生自签名证书。keytool现在处理X.509证书。X.509证书X.509标准规定了证书能够包含什么信息,并说明了记录信息的方法(数据格式)。除了签名外,任何X.509证书还包含以下数据:版本识别用于该证书的X.509标准的版本,该版本影响证书中所能指定的信息。迄今为止,已定义的版本有三个。keytool可导入和导出v1、v2和v3版的证书。他只能生成v1版证书。bitsCN.Com序列号发放证书的实体有责任为证书指定序列号,以使其区分于该实体发放的其他证书。此信息用途很多。例如,假如某一证书被撤消,其序列号将放到证书撤消清单(CRL)中。签名算法标识符用于标识CA签名证书时所用的算法。签发人名称签名证书的实体的X.500特征名。他通常为一个CA。使用该证书意味着信任签名该证书的实体。注意:有些情况下(例如根或顶层CA证书),签发人会签名自己的证书。有效期每个证书均只能在一个有限的时间段内有效。该有效期以起始日期和时间及终止日期和时间表示,能够短至几秒或长至一世纪。所选有效期取决于许多因素,例如用于签名证书的私钥的使用频率及愿为证书支付的金钱等。他是在没有危及相关私钥的条件下,实体能够依赖公钥值的预计时间。主体名证书能够识别其公钥的实体名。此名称使用X.500标准,因此在Internet中应是唯一的。他是实体的X.500特征名(DN),例如,?CN=Java Duke,OU=Java Software Division,O=Sun Microsystems Inc,C=US(这些指主体的通用名、组织单位、组织和国家。)主体公钥信息这是被命名实体的公钥,同时包括指定该密钥所属公钥密码系统的算法标识符及任何相关的密钥参数。中国.网管联盟X.509 1版1988年发布,已得到广泛使用,是最常用的版本。X.509 2版引入了主体和签发人唯一标识符的概念,以解决主体和/或签发人名称在一段时间后可能重复使用的问题。大多数证书监控文档都极力建议不要重复使用主体或签发人名称,而且建议证书不要使用唯一标识符。版本2证书尚未得到广泛使用。X.509 3版是最新的版本(1996年)。他支持扩展的概念,因此任何人均可定义扩展并将其纳入证书中。现在常用的扩展包括:KeyUsage(仅限密钥用于特别目的,例如只签名)和AlternativeNames(允许其他身份也和该公钥关联,例如DNS名、电子邮件地址、IP地址)。扩展可标记为极重要,以表示该扩展应被检查并执行或使用。例如,假如某一证书将KeyUsage扩展标记为极重要,而且配置为keyCertSign,则在SSL通讯期间该证书出现时将被拒绝,因为该证书扩展表示相关私钥应只用于签名证书,而不应该用于SSL。证书中的任何数据均用两个名为ASN.1/DER的相关标准进行编码。抽象语法注释1(Abstract Syntax Notation 1)描述数据。确定性编码规则(Definite Encoding Rules)描述储存和传输该数据的唯一方式。X.500特征名X.500特征名用于标识实体,例如X.509证书的主体和签发人(签名人)域所命名的实体。keytool支持以下的子组件:中国网管论坛commonName-个人常用名,例如Susan JonesorganizationUnit-小型组织(例如部门或分部)的名称,例如PurchasingorganizationName-大型组织的名称,例如ABCSystems,Inc.localityName-地方(城市)名,例如Palo AltostateName-州或省份名,例如Californiacountry-两个字母的国家代码,例如CH当给出一个特征名字符串作为-dname选项的值时,例如-genkey或-selfcert命令中的该选项,字符串必须为以下格式:CN=cName,OU=orgUnit,O=org,L=city,S=state,C=countryCode其中任何的斜体字代表实际值而上面的关键字是以下缩写:?CN=commonName?OU=organizationUnit?O=organizationName?L=localityName?S=stateName?C=country以下是特征名字符串样本:CN=Mark Smith,OU=JavaSoft,O=Sun,L=Cupertino,S=California,C=US以下是使用这一字符串的样本命令:keytool-genkey-dnameCN=Mark Smith,OU=JavaSoft,O=Sun,L=Cupertino,S=California,C=US-alias mark bitsCN.nET中国网管博客大小写对关键字缩写无关紧要。例如,CN、cn和Cn都将被当作是相同的。但顺序是有关系的;每个子组件必须按设计好的顺序出现。但是,不是任何子组件都必须有。能够只用一部分,例如:CN=Steve Meier,OU=SunSoft,O=Sun,C=US假如特征名字符串的值含有逗号,当在命令行指定该字符串时,逗号必须用字符来进行转义,如下所示:?cn=peter schuster,o=Sun Microsystems,Inc.,o=sun,c=us在命令行中指定特征名字符串是不必要的。假如某一命令需要指定特征名字符串,而在命令行中又未提供,则用户将得到每个子组件的提示。这种情况下,逗号无需用来转义。Internet RFC 1421证书编码标准证书常用Internet RFC 1421标准中定义的可打印的编码格式来存储,而不是用其二进制编码来存储。这种证书格式,也称Base 64编码,便于通过电子邮件或其他机制将证书导出到别的应用程式中。用-import和-printcert命令读入的证书能够是这种格式的编码或是二进制格式的编码。缺省情况下,-export命令将以二进制编码格式输出证书,但假如指定了-rfc选项,则将以可打印的编码格式输出证书。缺省情况下,-list命令打印证书的MD5指纹。而假如指定了-v选项,将以可读格式打印证书,假如指定了-rfc选项,将以可打印的编码格式输出证书。bitsCN.nET中国网管博客在其可打印的编码格式中,已编码证书的起始行是:-BEGIN CERTIFICATE-结束行是:-END CERTIFICATE-证书链keytool可创建和管理密钥仓库的密钥项,每个密钥项都含有私钥和相关证书链。链中的第一个证书含有和私钥对应的公钥。当第一次产生密钥时(参见-genkey命令),链中只含有一个元素,即自签名证书。自签名证书是个这样的证书:其签发人(签名人)和主体(证书所认证的公钥所属的实体)相同。当调用-genkey命令来生成新的公钥/私钥对时,他同时也把公钥打包进自签名证书中。之后,当证书签名请求(CSR)(参见-certreq命令)被生成并送至认证机构(CA)后,CA的答复将被导入(参见-import),证书链将取代自签名证书。在链的底部是认证主体公钥的CA所发放的证书(答复)。链中下一个证书是用于认证CA公钥的证书。在许多情况下,这是个自签名证书(即来自认证其自身公钥的CA的证书)且是链中的最后一个证书。在其他情况下,CA也许将返回证书链。这种情况下,链中底部的证书是相同的(由CA签名的证书,对密钥项的公钥进行认证),但链中第二个证书是由不同的CA所签名的,对您向其发送CSR的CA的公钥进行认证。然后,链中的下一个证书将是对第二个CA的公钥进行认证的证书,以此类推,直至到达自签名的根证书为止。因此,链中的每个证书(从第一个以后)都对链中前一个证书的签名人的公钥进行认证。bitsCN.nET中国网管博客许多CA只返回所发放的证书,而不支持链,特别是当层次结构较简单时(无中介CA)。这种情况下,必须用储存在密钥仓库中的可信任的证书信息来建立证书链。另一种答复格式(由PKCS#7标准所定义)除了包含所签发的证书外,还支持证书链。两种答复格式都可由keytool处理。顶层(根)CA证书是自签名的。但是,对根公钥的信任并非来自根证书本身(任何人都可用特征名来产生自签名证书!譬如说用VeriSign根CA的特征名),而是来自报纸之类的其他来源。根CA的公钥是广为人知的。他被储存在证书中的唯一原因是因为这是大多数工具所能理解的格式,因此这种情况下的证书只是作为一种传输根CA的公钥用的交通工具。在将根CA证书加到您的密钥仓库中之前,应该先对他进行查看(用-printcert选项)并将所显示的指纹和已知的指纹(从报纸、根CA的网页等中获取)进行比较。导入证书要从一个文档中导入某个证书,可用-import命令,如下所示:?keytool-import-alias joe-file jcertfile.cer此样本命令导入文档jcertfile.cer中的证书并将其存储在由别名joe标识的密钥仓库项中。导入证书的两个理由如下:BBS.bitsCN.com网管论坛为将其添加到可信任的证书清单中,或为导入因向CA提交证书签名请求(参见-certreq命令)而收到的来自该CA的认证答复。-alias选项的值指明要进行何种类型的导入。假如数据库中存在别名,且该别名标识具备私钥的项,则将假定您要导入认证答复。keytool将检查认证答复中的公钥是否和用别名储存的私钥相匹配,假如两者不同,则程式退出。假如别名标识另一种类型的密钥仓库项,则不导入该证书。假如该别名不存在,则他将被创建并和导入的证书关联。有关导入可信任证书的警告重要:将证书作为可信任的证书导入之前,请务必先仔细检查该证书!先查看一下(用-printcert命令,或用不带-noprompt选项的-import命令),确保所显示的证书指纹和所预计的相匹配。例如,假设某人给您送来或用电子邮件发来一个证书,您将他放在名为/tmp/cert的文档中。在将他加到可信任证书的清单中之前,可通过执行-printcert命令来查看他的指纹,如下所示:keytool-printcert-file/tmp/cert?Owner:CN=ll,OU=ll,O=ll,L=ll,S=ll,C=ll?Issuer:CN=ll,OU=ll,O=ll,L=ll,S=ll,C=ll?Serial Number:59092b34?Valid from:Thu Sep 25 18:01:13 PDT 1997 until:Wed Dec 24 17:01:13 PST 1997中国网管论坛?Certificate Fingerprints:?MD5:11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F?SHA1:20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE然后给向您发送证书的人打电话或用其他方式联系,将您将您所看到的指纹和他们所提供的比较。只有两者相等才可确保证书在传送途中没有被其他人(例如,攻击者)的证书所更换
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工厂电缆铺设方案(3篇)
- DB23-T2978-2021-春整地玉米秸秆还田技术规程-黑龙江省
- 新品生产方案书(3篇)
- 工作经费项目管理制度
- 售前客服闭环管理制度
- 矿场挖矿托管方案(3篇)
- 承包运营管理方案(3篇)
- 培训公司业务管理制度
- 学校保洁日常管理制度
- 小学睡眠监测管理制度
- 2024年全国初中数学联赛试题及答案(修正版)
- 先张法预应力混凝土管桩生产线建设项目
- 《阀门检修及维护》课件
- 体力处理操作风险评估报告
- 中职英语 基础模块2 Unit 8 Green Earth
- NB-T 47013.15-2021 承压设备无损检测 第15部分:相控阵超声检测
- 三级医师查房制度课件
- 老年人神经健康讲座内容摘要
- 燃用重质渣油的铝合金熔炼炉能耗测试与分析
- 内蒙古工业大学计算机网络试卷A-2023年(含答案)
- 申请提取住房公积金个人授权、承诺书(样表)
评论
0/150
提交评论