了解密钥库、证书和别名

     2023-04-14     271

关键词:

【中文标题】了解密钥库、证书和别名【英文标题】:Understanding keystore, certificates and alias 【发布时间】:2011-08-09 03:20:26 【问题描述】:

密钥库是实际证书,还是别名是证书?

如果我使用不同的别名来签署我的应用程序,它会扰乱市场上的更新吗?或者我是否需要使用不同的密钥库对我的应用程序进行签名才能搞砸?别名下的信息从哪里可以查看?

【问题讨论】:

【参考方案1】:

Keytool 生成的密钥库文件存储一对私钥和公钥。存储在密钥库中的每一对或条目​​都由一个唯一别名引用。简而言之:

密钥库条目 = 私钥 + 公钥 pair = 由别名标识

密钥库使用其单独的密码保护每个私钥,并使用(可能不同的)密码保护整个密钥库的完整性。

例如,当您使用 Eclipse Android 工具的 Export Signed Application Package 选项对 Android 应用程序进行签名时,系统会要求您首先选择一个密钥库,然后要求您从该密钥库中选择一个别名/条目/对。在为密钥库和所选别名提供密码后,应用程序被签名,该别名的公钥(证书)嵌入到 APK 中。

现在回答您的问题,您只能通过使用相同别名再次对更新进行签名来发布使用别名“foo”签名的应用程序的更新。丢失存储别名的密钥库会阻止您发布应用的更新版本。

但是,有一种方法可以使用新别名为应用签名,但它涉及使用 keytool -keyclone 克隆密钥库中的现有别名:

创建一个新的密钥库条目,它 具有相同的私钥并且 证书链作为原始 进入。

原始条目由 别名(默认为“mykey”,如果 不提供)。新的(目的地) 条目由 dest_alias 标识。如果 没有提供目标别名 命令行,提示用户 为它。

如果私钥密码是 不同于密钥库密码, 那么只有在以下情况下才会克隆该条目 提供了有效的密钥通行证。这是 用于保护的密码 与别名关联的私钥。如果 没有提供密钥密码 命令行和私钥 密码不同于 密钥库密码,用户是 提示它。私钥在 克隆的条目可能会受到保护 如果需要,可以使用不同的密码。如果 没有提供 -new 选项 命令行,提示用户输入 新条目的密码(并且可能 选择让它和for一样 克隆条目的私钥)。

更多信息:

http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html

http://developer.android.com/guide/publishing/app-signing.html

【讨论】:

开发网站建议对所有应用使用相同的证书。那么这是否意味着,只要我使用相同的密钥库,我就可以使用具有任何密码的任何别名,并且不会弄乱更新,因为它只是一个参考?实际的密钥库是重要的部分? 我重写了我的答案以更准确。简而言之,您确实必须使用相同的别名来签署您的应用程序的所有更新。 @Julio 那么最好的做法是对您想要发布的所有不同应用程序使用相同的别名,正如开发网站所建议的那样?我认为没有理由为您的所有应用创建单独的别名。 @JulioGorgé-嘿,我只是想知道 R 别名区分大小写..?? @JulioGorgé 你的意思是同一个别名还是同一个键。别名只是一个名字,我可以重命名别名。只要应用中的密钥(具体来说是公钥)匹配,您就可以发布更新。

使用基于 Java Key Store 中的别名的单个证书

...ore【发布时间】:2012-09-3018:51:58【问题描述】:我有一个密钥库,其中添加了多个密钥和证书我想使用基于密钥库中别名的证书并将其用于SSL我尝试设置以下系统属性,但没有任何帮助System.setProperty("javax.net.ssl.keyAli 查看详情

TOMCAT SSL 错误:别名不能识别密钥条目

】TOMCATSSL错误:别名不能识别密钥条目【英文标题】:TOMCATSSLError:Aliasnamedoesnotidentifyakeyentry【发布时间】:2012-02-0615:37:54【问题描述】:我正在尝试使用SSL和(由某人)提供给我们的证书来配置Tomcat6。我的SSL体验只持续了几天... 查看详情

keytool工具生成jks证书(代码片段)

...365-keystoreD:/baojian.jks-storepassbaojian-alias别名-keypass指定生成密钥的密码-keyalg指定密钥使用的加密算法(如RSA)-keysize密钥大小-validity过期时间,单位:天-keystore指定存储密钥的密钥库的生成路径、名称。-storepass指定... 查看详情

将密钥和 SSL 证书导入 java 密钥库

】将密钥和SSL证书导入java密钥库【英文标题】:ImportkeyandSSLCertificateintojavakeystore【发布时间】:2013-01-0203:12:45【问题描述】:我有pem格式的证书文件和私钥文件。是否可以使用带有JDK附带的默认库而不是第三方库的Java代码将这... 查看详情

我们可以在密钥库中加载多个证书和密钥吗?

】我们可以在密钥库中加载多个证书和密钥吗?【英文标题】:CanweloadmultipleCertificates&KeysinaKeyStore?【发布时间】:2011-09-1606:40:07【问题描述】:是否总是只需要加载Pairs(即证书和密钥一起)?如果一个KeyStore有多个证书和密... 查看详情

如何使用自签名证书创建密钥库和信任库?

】如何使用自签名证书创建密钥库和信任库?【英文标题】:Howtocreatekeystoreandtruststoreusingself-signedcertificate?【发布时间】:2017-07-1221:46:02【问题描述】:我们有JAVA服务器和客户端使用SSL通过网络进行通信。服务器和客户端使用... 查看详情

为啥一个密钥库可以有多个证书?

...布时间】:2018-07-1310:21:23【问题描述】:我想确定我非常了解apk签名过程。因此,通过将apk链接到证书(开发人员的身份)来对apk进行签名,OK它通过密钥库文件实现。但具体来说,这个文件包含什么?那是我不太确定的地方,... 查看详情

信任库和密钥库定义

】信任库和密钥库定义【英文标题】:TruststoreandKeystoreDefinitions【发布时间】:2010-09-2400:34:17【问题描述】:密钥库和信任库有什么区别?【问题讨论】:【参考方案1】:密钥库包含私钥,以及带有相应公钥的证书。信任库包含... 查看详情

从证书、中间证书和私钥创建密钥库 [重复]

】从证书、中间证书和私钥创建密钥库[重复]【英文标题】:Creatingakeystorefromcertificate,intermediatecertificateandprivatekey[duplicate]【发布时间】:2017-02-0500:58:59【问题描述】:在给定工作集1.acertificate.cer、2.一个middle.cer和3.一个私钥。可... 查看详情

证书和密钥库

】证书和密钥库【英文标题】:Certificatesandkeystores【发布时间】:2019-06-1222:12:14【问题描述】:假设我聘请了一名承包商来为我开发一款适用于Android和iOS的应用。承包商在自己的计算机上进行编码,并将最终产品推送到iTunes和Go... 查看详情

使用jdk自带的keytool工具生成证书(代码片段)

一、keytool简介  keytool是java用于管理密钥和证书的工具,它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。在JDK 1.4以后的版... 查看详情

如何从 PEM 证书和密钥构建 SSLSocketFactory 而无需转换为密钥库?

】如何从PEM证书和密钥构建SSLSocketFactory而无需转换为密钥库?【英文标题】:HowtobuildaSSLSocketFactoryfromPEMcertificateandkeywithoutconvertingtokeystore?【发布时间】:2017-07-2905:44:36【问题描述】:我获得了一个自签名客户端证书工具包,用... 查看详情

如何利用keytool工具生成数字证书

...证书的工具keytool用法总结一、keytool的概念  keytool是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。... 查看详情

Tomcat HTTPS 密钥库证书

】TomcatHTTPS密钥库证书【英文标题】:TomcatHTTPSkeystorecertificate【发布时间】:2011-01-0413:08:29【问题描述】:使用SSL和Tomcat时遇到了另一个问题:我配置了一个密钥库,其中包含一个密钥和一个证书(我希望向连接到该站点的客户... 查看详情

jarsigner找不到xxx的证书链。xxx必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目

...题:jarsigner:找不到xxx的证书链。xxx必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目。我遇到的问题是keyAlias输入错误。解决方案:unsi 查看详情

jarsigner找不到xxx的证书链。xxx必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目

...题:jarsigner:找不到xxx的证书链。xxx必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目。我遇到的问题是keyAlias输入错误。解决方案:unsi 查看详情

jarsigner找不到xxx的证书链。xxx必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目

...题:jarsigner:找不到xxx的证书链。xxx必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目。我遇到的问题是keyAlias输入错误。解决方案:unsi 查看详情

信任库中信任哪些证书?

...store?【发布时间】:2012-03-0109:14:27【问题描述】:我不太了解密钥库/信任库术语,但就我而言,信任库保持对等服务器信任的证书。我可以使用查看密钥库的内容keytool-list-keystorerefArchive/testkeystoreEnterkeystorepassword:password信任库有... 查看详情