查看文章 |
上接1、1 JCA Design and Architecture(二) Storing and Managing Keys(存储并管理key) Keystore是public keys和certificates的数据库。 默认情况下,这个数据库是以名为keystore的文件形式存在于用户的home目录下。SUN provider包提供这个功能通过一个私有的格式叫做JKS。在这个文件里的每一个private key都有密码保护,这个文件本身也有密码保护。KeyStore引擎类提供一个健壮的接口来实现keystore provider。 KeyStore存储2种类型的条目。 第一、一个key条目(key entry),包含敏感的key信息,如:private key和authenticating certificate chain或者一个秘密的key。 第二、一个可信证明条目(trusted certificate entry),包含验证特定public key的拥有者。
Keystore如何存储依赖于其实现;因此,它不是由引擎类指定的。KeyStore 引擎类提供方法来加载并保存一个keystore,访问entry的别名,决定entry类型,管理entry本身,并获得keystore的信息。 标准的getInstance方法可以用来创建keystore。 Load方法加载从指定的输入流加载keystore。可选的密码是用来验证keystore完整性的方法。如果没有密码指定,完整性检查不会执行。 传入null到input位置就会创建一个空的keystore final void load(InputStream stream, char[] password) “store”方法保存当前的keystore到指定的输出流。如果指定了密码,它用来计算keystore数据的校验和(checksum)并加到输出流的尾部。校验和在加载执行完整性检查时使用。
final void store(OutputStream stream, char[] password) |