应该如何回答 keytool 提出的 Java 密钥库问题?

How is one supposed to answer Java keystore questions that keytool asks?

当使用 Java 的 keytool 程序创建密钥库文件时,它会询问一系列关于与密钥库关联的身份的问题。其中包括一些我想知道是否需要它们、它们的用途(如果有的话)、任何人如何 see/use 它们以及它们应该从什么上下文得到回答。例如:

"What is your first and last name?" 所以我想知道,他们指的是谁?如果我们的团队有一个 IT 技术 运行 为我们提供这个程序,他应该写上他的名字吗?应该是我们开发团队或部门的经理吗?如果我们在一家公司工作,写下自己名字的人离开了公司,我们该怎么办?

"What is the name of your organizational unit?"如果有none怎么办?

"What is the name of your organization?"如果我只是一个做程序的人呢?

"What is the two-letter country code for this unit?" 什么单位?这有什么作用?我可以留空吗?

此外,对于指定人员提供此信息有哪些协议、权利和责任?或者这些只是为了在我们希望关联此信息时提供帮助,如果它们看起来不相关或不需要,我们可以选择将其中任何一个留空?

如果它是 Android Play 商店的移动应用程序,答案是否不同?

这些问题的目的是向使用该密钥库文件的人提供有关您/您的组织的信息;例如 Android Play 商店注册人。

How is one supposed to answer Java keystore questions that keytool asks?

一般来说,您应该如实回答,并提供必要的信息。

就你的情况而言,我认为你正在签署你的申请。 (如果我错了请纠正我......)在那种情况下,证书的用途是(根据this):

Android uses this certificate to identify the author of an app ...

因此您的回答应该足以让 Android Play 商店管理员和 Android 最终用户能够足够具体地识别应用程序的作者,以决定是否信任应用程序应用

显然,在不同的情况下,作者可能被识别为个人、组织单位或组织。由您(即发布软件的人)来进行调用。如果 Android 文档中有一些指导,我找不到。 (如果您能从 Android / Google 中找到任何“官方”内容,请在下面添加评论。)


Also, what agreements, rights and responsibilities are associated with providing this information, upon the person assigned?

据我所知,none。但是,上传您的应用肯定会给您带来某些义务。

Or are these just trying to be helpful in case we want this info associated, and we can choose to leave any of them blank if they don't seem relevant or desired?

不清楚。但是,遗漏信息可能会导致人们认为您的证书不可信。同样,自签名证书也容易受到怀疑1.


1 - 例如,没有什么能阻止您编写 Android 应用程序来访问用户的银行帐户。您可以在该应用程序上签名,说明它是由银行发布的。但是,如果证书没有返回到受信任的根 CA 的信任链,那么用户应该 怀疑您的应用程序。

参见: http://developer.android.com/tools/publishing/app-signing.htmlhttps://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html#CHDHBFGJ 和(如果你真的想了解 "subject" 的细节) http://www.ietf.org/rfc/rfc5280.txt

这些选项允许您签署 一些东西(比如您的 Android apk)并验证您的更新是真实的交易以避免欺诈。

只需输入一些适当的值,无论发生什么(人员离开、组织名称更改等),您都必须使用相同的密钥库。

如果可以的话,我只是将大部分字段留空。您可以使用 keytooldname 参数来做到这一点。例如:

keytool -genkeypair -alias foo -keyalg RSA -keystore mystore.p12 -dname CN=JoeBloggs

这会将 CN(“名字和姓氏”)设置为 JoeBloggs,但将所有其他字段留空。您可以使用如下命令查看结果:keytool -list -keystore mystore.p12 -v