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