©
本文档使用
php.cn手册 发布
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
1 2 |
|
1 |
|
此类表示密钥和证书的存储设施。
KeyStore
管理不同类型的条目。每种类型的条目都实现 KeyStore.Entry
接口。提供了三种基本的 KeyStore.Entry
实现:
此类型的条目保存一个加密的 PrivateKey
,可以选择用受保护格式存储该私钥,以防止未授权访问。它还随附一个相应公钥的证书链。
给定条目使用私钥和证书链进行自验证 (self-authentication)。应用此验证的包括软件发布组织,它们将 JAR 文件签名为发布和/或许可软件的一部分。
此类型的条目保存一个加密的 SecretKey
,可以选择用受保护格式存储该密钥,以防止未授权访问。
此类型的条目包含一个属于另一方的单个公钥 Certificate
。它被称为可信证书,因为 keystore 的所有者相信证书中的公钥确实属于该证书的 subject(所有者)所标识的身份。
此类型的条目可用于验证其他方。
KeyStore 中的每一条目都用 “alias” 字符串标识。对于私钥及其关联的证书链,这些字符串用于区分实体验证自身可以采用的不同方式。例如,实体可以使用不同的证书授权或不同的公钥算法来验证自身。
别名是否区分大小写与实现有关。为了避免出现问题,建议不要在 KeyStore 中使用只有大小写区别的别名。
在这里没有指定 keystore 是否是持久性的,也没有指定 keystore 是持久性时所使用的机制。这允许使用各种技术保护敏感的(例如,私有的或秘密的)密钥。一种选择是使用智能卡或其他集成加密引擎 (SafeKeyper),也可以(以各种格式)使用文件之类更为简单的机制。
请求 KeyStore 对象的典型方式包括使用默认类型和提供一个特定的 keystore 类型。
1 |
|
1 |
|
必须先加载
keystore 才能对其进行访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
load
方法创建一个空 keystore,传递 null
作为 InputStream
的参数。
一旦加载了 keystore,就能够从 keystore 读取现有条目,或向 keystore 写入新条目:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
PrivateKey
,
SecretKey
,
Certificate
嵌套类摘要 | |
---|---|
static class |
KeyStore.Builder
将被实例化的 KeyStore 对象的描述。 |
static class |
KeyStore.CallbackHandlerProtection
封装 CallbackHandler 的 ProtectionParameter。 |
static interface |
KeyStore.Entry
用于 KeyStore 项类型的标记接口。 |
static interface |
KeyStore.LoadStoreParameter
用于 KeyStore load 和 store 参数的标记接口。 |
static class |
KeyStore.PasswordProtection
ProtectionParameter 的一个基于密码的实现。 |
static class |
KeyStore.PrivateKeyEntry
保存 PrivateKey 和相应证书链的 KeyStore 项。 |
static interface |
KeyStore.ProtectionParameter
用于 keystore 保护参数的标记接口。 |
static class |
KeyStore.SecretKeyEntry
保存 SecretKey 的 KeyStore 项。 |
static class |
KeyStore.TrustedCertificateEntry
保存可信的 Certificate 的 KeyStore 项。 |
构造方法摘要 | |
---|---|
protected |
KeyStore(KeyStoreSpi keyStoreSpi,
Provider provider,
String type)
创建给定类型的 KeyStore 对象,并在其中封装给定的提供者实现(SPI 对象)。 |
方法摘要 | |
---|---|
Enumeration<String> |
aliases()
列出此 keystore 的所有别名。 |
boolean |
containsAlias(String alias)
检查给定别名是否存在于此 keystore 中。 |
void |
deleteEntry(String alias)
删除此 keystore 中给定别名标识的条目。 |
boolean |
entryInstanceOf(String alias,
Class<? extends KeyStore.Entry> entryClass)
确定指定 alias 的 keystore Entry 是否是指定 entryClass 的实例或子类。 |
Certificate |
getCertificate(String alias)
返回与给定别名关联的证书。 |
String |
getCertificateAlias(Certificate cert)
返回证书与给定证书匹配的第一个 keystore 条目的别名。 |
Certificate[] |
getCertificateChain(String alias)
返回与给定别名关联的证书链。 |
Date |
getCreationDate(String alias)
返回给定别名标识的条目的创建日期。 |
static String |
getDefaultType()
返回 Java 安全属性文件中指定的默认 keystore 类型;如果不存在此类属性,则返回字符串 "jks"("Java keystore" 的首字母缩写)。 |
KeyStore.Entry |
getEntry(String alias,
KeyStore.ProtectionParameter protParam)
使用指定保护参数获取指定别名的 keystore Entry 。 |
static KeyStore |
getInstance(String type)
返回指定类型的 keystore 对象。 |
static KeyStore |
getInstance(String type,
Provider provider)
返回指定类型的 keystore 对象。 |
static KeyStore |
getInstance(String type,
String provider)
返回指定类型的 keystore 对象。 |
Key |
getKey(String alias,
char[] password)
返回与给定别名关联的密钥,并用给定密码来恢复它。 |
Provider |
getProvider()
返回此 keystore 的提供者。 |
String |
getType()
返回此 keystore 的类型。 |
boolean |
isCertificateEntry(String alias)
如果给定别名标识的条目是通过调用 setCertificateEntry 或者以 TrustedCertificateEntry 为参数的 setEntry 创建的,则返回 true。 |
boolean |
isKeyEntry(String alias)
如果给定别名标识的条目是通过调用 setKeyEntry 或者以 PrivateKeyEntry 或 SecretKeyEntry 为参数的 setEntry 创建的,则返回 true。 |
void |
load(InputStream stream,
char[] password)
从给定输入流中加载此 KeyStore。 |
void |
load(KeyStore.LoadStoreParameter param)
使用给定 LoadStoreParameter 加载此 keystore。 |
void |
setCertificateEntry(String alias,
Certificate cert)
将给定可信证书分配给给定别名。 |
void |
setEntry(String alias,
KeyStore.Entry entry,
KeyStore.ProtectionParameter protParam)
用指定别名保存 keystore Entry 。 |
void |
setKeyEntry(String alias,
byte[] key,
Certificate[] chain)
将给定密钥(已经被保护)分配给给定别名。 |
void |
setKeyEntry(String alias,
Key key,
char[] password,
Certificate[] chain)
将给定的密钥分配给给定的别名,并用给定密码保护它。 |
int |
size()
获取此 keystore 中条目数。 |
void |
store(KeyStore.LoadStoreParameter param)
使用给定 LoadStoreParameter 存储此 keystore。 |
void |
store(OutputStream stream,
char[] password)
将此 keystore 存储到给定输出流,并用给定密码保护其完整性。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
1 2 3 |
|
keyStoreSpi
- 提供者实现provider
- 提供者type
- keystore 类型。方法详细信息 |
---|
1 2 |
|
此方法从首选 Provider 开始遍历已注册安全提供者列表。返回一个封装 KeyStoreSpi 实现的新 KeyStore 对象,该实现取自第一个支持指定类型的 Provider。
注意,可以通过 Security.getProviders()
方法获取已注册提供者列表。
type
- keystore 类型。有关标准 keystore 类型的信息,请参阅
Java Cryptography Architecture API Specification & Reference 中的附录 A。
KeyStoreException
- 如果没有 Provider 支持指定类型的 KeyStoreSpi 实现。Provider
1 2 3 4 |
|
返回一个封装 KeyStoreSpi 实现的新 KeyStore 对象,该实现取自指定提供者。指定提供者必须在安全提供者列表中注册。
注意,可以通过 Security.getProviders()
方法获取已注册提供者列表。
type
- keystore 类型。有关标准 keystore 类型的信息,请参阅
Java Cryptography Architecture API Specification & Reference 中的附录 A。provider
- 提供者的名称。
KeyStoreException
- 如果不能从指定提供者获得指定类型的 KeyStoreSpi 实现。
NoSuchProviderException
- 如果指定提供者未在安全提供者列表中注册。
IllegalArgumentException
- 如果提供者的名称为 null 或空。Provider
1 2 3 |
|
返回一个封装 KeyStoreSpi 实现的新 KeyStore 对象,该实现取自指定 Provider 对象。注意,指定 Provider 对象无需在提供者列表中注册。
type
- keystore 类型。有关标准 keystore 类型的信息,请参阅
Java Cryptography Architecture API Specification & Reference 中的附录 A。provider
- 提供者。
KeyStoreException
- 如果不能从指定 Provider 对象获得指定类型的 KeyStoreSpi 实现。
IllegalArgumentException
- 如果指定提供者为 null。Provider
1 |
|
调用某个 getInstance
方法时不希望使用固定编码 (hard coded) keystore 类型的应用程序,以及用户未指定 keystore 类型时希望提供默认 keystore 类型的应用程序可以使用默认的 keystore 类型。
通过将 "keystore.type" 安全属性(在 Java 安全属性文件中)的值设置为所需的 keystore 类型,可以更改默认的 keystore 类型。
1 |
|
1 |
|
1 2 3 4 5 |
|
setKeyEntry
,或者以 PrivateKeyEntry
或 SecretKeyEntry
为参数的 setEntry
关联密钥与别名。
alias
- 别名password
- 用于恢复密钥的密码
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。
NoSuchAlgorithmException
- 如果不能找到恢复密钥的算法
UnrecoverableKeyException
- 如果不能恢复密钥(例如,给定密码错误)。1 2 |
|
setKeyEntry
,或者以 PrivateKeyEntry
为参数的 setEntry
关联证书链与别名。
alias
- 别名
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。1 2 |
|
如果给定的别名标识通过调用 setCertificateEntry
创建的条目,或者通过调用以 TrustedCertificateEntry
为参数的 setEntry
创建的条目,则返回包含在该条目中的可信证书。
如果给定的别名标识通过调用 setKeyEntry
创建的条目,或者通过调用以 PrivateKeyEntry
为参数的 setEntry
创建的条目,则返回该条目中证书链的第一个元素。
alias
- 别名
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。1 2 |
|
alias
- 别名
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。1 2 3 4 5 |
|
如果给定密钥的类型为 java.security.PrivateKey
,则它必须附带证明相应公钥的证书链。
如果给定别名已经存在,则与别名关联的 keystore 信息将被给定密钥(还可能包括证书链)重写。
alias
- 别名key
- 要与别名关联的密钥password
- 保护密钥的密码chain
- 相应公钥的证书链(只在给定密钥的类型为 java.security.PrivateKey
时需要)。
KeyStoreException
- 如果 keystore 尚未被初始化(加载)、无法保护给定的密钥,或者此操作由于某些其他原因而失败1 2 3 4 |
|
如果受保护密钥的类型为 java.security.PrivateKey
,则它必须附带证明相应公钥的证书链。如果底层 keystore 实现的类型为 jks
,则必须根据 PKCS #8 标准中的定义将 key
编码为 EncryptedPrivateKeyInfo
。
如果给定别名已经存在,则与别名关联的 keystore 信息将被给定密钥(还可能包括证书链)重写。
alias
- 别名key
- 要与别名关联的密钥(以受保护格式)chain
- 相应公钥的证书链(只在受保护密钥的类型为 java.security.PrivateKey
时有用)。
KeyStoreException
- 如果 keystore 尚未被初始化(加载),或者此操作由于某些其他原因而失败。1 2 3 |
|
如果给定别名标识通过调用 setCertificateEntry
创建的现有条目,或者通过调用以 TrustedCertificateEntry
为参数的 setEntry
创建的现有条目,则现有条目中的可信证书将被给定证书重写。
alias
- 别名cert
- 证书
KeyStoreException
- 如果 keystore 尚未被初始化,或者给定别名已存在但不标识包含可信证书的条目,或者此操作由于其他某些原因失败。1 2 |
|
alias
- 别名
KeyStoreException
- 如果 keystore 尚未被初始化,或者条目不能被移除。1 2 |
|
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。1 2 |
|
alias
- 别名
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。1 2 |
|
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。1 2 |
|
setKeyEntry
或者以 PrivateKeyEntry
或 SecretKeyEntry
为参数的 setEntry
创建的,则返回 true。
alias
- 要检查的 keystore 条目的别名
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。1 2 |
|
setCertificateEntry
或者以 TrustedCertificateEntry
为参数的 setEntry
创建的,则返回 true。
alias
- 要检查的 keystore 条目的别名
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。1 2 |
|
此方法尝试将给定证书与每一个 keystore 条目匹配。如果认为条目是通过调用 setCertificateEntry
或者以 TrustedCertificateEntry
为参数的 setEntry
创建的,则将给定证书与该条目的证书进行比较。
如果认为条目是通过调用 setKeyEntry
或者以 PrivateKeyEntry
为参数的 setEntry
创建的,则将给定证书与该条目证书链的第一个元素进行比较。
cert
- 要匹配的证书
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。1 2 3 4 5 6 |
|
stream
- 要写入此 keystore 的输出流。password
- 生成 keystore 完整性检验的密码
KeyStoreException
- 如果 keystore 尚未被初始化(加载)。
IOException
- 如果存在数据 I/O 问题
NoSuchAlgorithmException
- 如果不存在恰当的数据完整性算法
CertificateException
- 如果 keystore 数据中包含无法存储的证书1 2 3 4 5 |
|
LoadStoreParameter
存储此 keystore。
param
- 指定如何存储 keystore 的 LoadStoreParameter
,该参数可以为 null
IllegalArgumentException
- 如果无法识别给定的 LoadStoreParameter
输入
KeyStoreException
- 如果 keystore 尚未被初始化(加载)
IOException
- 如果存在数据 I/O 问题
NoSuchAlgorithmException
- 如果不存在恰当的数据完整性算法
CertificateException
- 如果 keystore 数据中包含无法存储的证书1 2 3 4 5 |
|
可以给定一个密码来解锁 keystore(例如,驻留在硬件标记设备上的 keystore)或检验 keystore 数据的完整性。如果没有指定用于完整性检验的密码,则不会执行完整性检验。
如果要创建空 keystore,或者不能从流中初始化 keystore,则传递 null
作为 stream
的参数。
注意,如果此 keystore 已经被加载,那么它将被重新初始化,并再次从给定输入流中加载。
stream
- 从中加载 keystore 的输入流,或者 null
password
- 用来检验 keystore 完整性的密码,用来解锁 keystore 的密码,或者 null
IOException
- 如果存在 keystore 数据 I/O 问题或格式问题,如果需要密码却没有指定,或者指定的密码错误。如果错误是由于密码错误引起的,那么 IOException
的 cause
应该是 UnrecoverableKeyException
NoSuchAlgorithmException
- 如果不存在用来检验 keystore 完整性的算法
CertificateException
- 如果不能加载 keystore 中的任何证书1 2 3 4 |
|
LoadStoreParameter
加载此 keystore。
注意,如果此 KeyStore 已经被加载,那么它将被重新初始化,并再次从给定参数加载。
param
- 指定如何加载 keystore 的 LoadStoreParameter
,可以为 null
IllegalArgumentException
- 如果无法识别给定 LoadStoreParameter
输入
IOException
- 如果存在 keystore 数据 I/O 问题或格式问题。如果错误是由于 ProtectionParameter
不正确(如密码错误)引起的,那么 IOException
的 cause
应该是 UnrecoverableKeyException
NoSuchAlgorithmException
- 如果不存在用来检验 keystore 完整性的算法
CertificateException
- 如果不能加载 keystore 中的任何证书1 2 3 4 5 |
|
Entry
。
alias
- 获取此别名的 keystore Entry
protParam
- 用来保护 Entry
的 ProtectionParameter
,可以为 null
Entry
;如果不存在这种条目,则返回 null
NullPointerException
- 如果 alias
为 null
NoSuchAlgorithmException
- 如果不存在用来恢复条目的算法
UnrecoverableEntryException
- 如果指定的 protParam
不足或无效
UnrecoverableKeyException
- 如果该条目是 PrivateKeyEntry
或 SecretKeyEntry
,并且指定的 protParam
不包含恢复密钥所需的信息(如密码错误)
KeyStoreException
- 如果 keystore 尚未被初始化(加载)setEntry(String, KeyStore.Entry, KeyStore.ProtectionParameter)
1 2 3 4 |
|
Entry
。保护参数用来保护 Entry
。
如果指定别名的条目已经存在,它将被重写。
alias
- 以此别名保存 keystore Entry
entry
- 要保存的 Entry
protParam
- 用来保护 Entry
的 ProtectionParameter
,可以为 null
NullPointerException
- 如果 alias
或 entry
为 null
KeyStoreException
- 如果 keystore 尚未被初始化(加载),或者此操作由于其他原因失败getEntry(String, KeyStore.ProtectionParameter)
1 2 3 |
|
alias
的 keystore Entry
是否是指定 entryClass
的实例或子类。
alias
- 别名entryClass
- 条目的类
alias
的 keystore Entry
是指定 entryClass
的实例或子类,则返回 true;否则返回 false。
NullPointerException
- 如果 alias
或 entryClass
为 null
KeyStoreException
- 如果 keystore 尚未被初始化(加载)
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。