【发布时间】:2020-07-22 23:50:53
【问题描述】:
类 KeyStore 有一个名为 setCertificateEntry(alias, certificate) 的方法。我看到的大多数客户端示例都使用“ca”作为别名。服务器是否在客户端-服务器握手期间自动请求“ca”?如果我使用“abc”而不是“ca”,会发生什么?问候。
【问题讨论】:
标签: java android ssl ssl-certificate
类 KeyStore 有一个名为 setCertificateEntry(alias, certificate) 的方法。我看到的大多数客户端示例都使用“ca”作为别名。服务器是否在客户端-服务器握手期间自动请求“ca”?如果我使用“abc”而不是“ca”,会发生什么?问候。
【问题讨论】:
标签: java android ssl ssl-certificate
别名实际上只是您正在使用的密钥库的本地名称。它用于标识密钥库中的条目,因此您不能将它重复用于两个条目,但它可以是您喜欢的任何内容(尽管我必须承认我从未尝试过使用非 ASCII 字符,并且只有官方信任库使用小写字母或数字)。
documentation 还说:
别名是否区分大小写取决于实现。为了避免出现问题,建议不要在 KeyStore 中使用仅大小写不同的别名。
某些密钥库实现和格式可能有更多限制或以不同方式使用该名称。例如,WINDOWS-ROOT 密钥库(它是 Windows 原生存储的前端)使用 Windows 的“友好名称”作为别名,遗憾的是它在 Windows 证书存储中不是唯一的,因此来自原生存储的一些证书可能被隐藏且不可用(它是从别名到条目的映射,加载具有相同名称的新条目替换另一个条目)。但是,这当然不应该成为 Android 的问题。
如果您正在构建一个将用作信任库的密钥库,该信任库可能包含许多 CA,调用一个“ca”会使以后难以识别它们。 (这主要是一个管理问题,能够手动找到哪个证书。)
如果您查看默认信任库,您将获得名称类似于这些 CA 证书的主题 DN 的别名,例如“verisignclass1g2ca”。
对于用作密钥库(相对于信任库)并包含多个私钥条目的密钥库而言,拥有一个您能记住的标识符通常更为重要,因为这可以帮助您将应用程序配置为使用特定证书来标识自己.
【讨论】: