public class KeyStore extends Object
一个KeyStore
管理不同类型的条目。每一种进入实施KeyStore.Entry
接口。提供了三个基本KeyStore.Entry
实现:
这种类型的入口保存密码PrivateKey
,这是可选的存储在受保护的格式,以防止未经授权的访问。它也伴随着相应的公共密钥的证书链。
私有密钥和证书链被一个给定的实体用于自我认证。此身份验证的应用程序包括作为释放和/或授权软件的一部分签署的文件的软件分发组织。
这种类型的入口保存密码SecretKey
,这是可选的存储在受保护的格式,以防止未经授权的访问。
这种类型的条目包含一个公钥Certificate
属于另一方。它被称为可信证书因为密钥所有者信托证书中的公钥确实属于身份识别的主题(业主)的证书。
这种类型的条目可以用来对其他方进行身份验证。
在密钥库中每个条目是确定一个“别名”字符串。在私钥和它们的关联的证书链的情况下,这些字符串区别于实体可以对其进行身份验证的不同方法中的区别。例如,实体可以使用不同的证书颁发机构进行身份验证,也可以使用不同的公钥算法来进行身份验证。
无论是别名是区分大小写的是依赖于实现的。为了避免这些问题,建议不要在密钥库,只有在不同情况下使用别名。
无论密钥是持久的,而机构使用的密钥库如果是持续的,不是在这里指定。这允许使用各种技术保护敏感的(例如,私人或秘密)密钥。智能卡或其他集成加密引擎(safekeyper)是一个选择,和简单的机制,如文件也可以使用(多种格式)。
典型的方式要求密钥库对象包括依赖于默认的类型和提供特定的密钥类型。
密钥Ks=keystore。getInstance(密钥库。getdefaulttype());系统会返回一个默认的类型库的实现。
密钥Ks=keystore getInstance(“硕”);系统将返回指定密钥类型环境中可用的最优选的实施。
在密钥库可以被访问,它必须loaded
。
密钥Ks=keystore。getInstance(密钥库。getdefaulttype());获取用户密码和文件输入流字符[ ]密码= getpassword();尝试(FileInputStream FIS =新的输入(“keystorename”)){KS。负荷(FIS,密码);}使用上述
load
方法创建一个空的密钥库,通过
null
为
InputStream
论点。
一旦密钥被加载,可以从密钥库中读取现有的条目,或写新的条目到密钥库:
KeyStore.ProtectionParameter protParam =新的密码保护密钥(密码);/得到我的私人钥匙keystore.privatekeyentry pkentry =(密钥库。privatekeyentry)KS。getentry(“privatekeyalias”,ProtParam);myprivatekey = pkentry getprivatekey()私钥;/保存我的秘密钥匙javax.crypto.secretkey mysecretkey;keystore.secretkeyentry skentry =新的密钥。secretkeyentry(mysecretkey);KS。setentry(“secretkeyalias”,skentry,ProtParam);/ /储存密钥库尝试(FileOutputStream FOS =新FileOutputStream(“newkeystorename”)){KS店(FOS、密码);}注意,虽然相同的密码可以用来加载密钥库,来保护私钥的进入,保护密钥输入,并存储密钥库(如图所示的示例代码段),不同的密码或其他保护参数也可以使用。
java平台的每种实现都要求支持以下标准KeyStore
型:
PKCS12
PrivateKey
,
SecretKey
,
Certificate
Modifier and Type | Class and Description |
---|---|
static class |
KeyStore.Builder
描述一个对象被实例化的密钥库。
|
static class |
KeyStore.CallbackHandlerProtection
一个protectionparameter封装callbackhandler。
|
static interface |
KeyStore.Entry
一个
KeyStore 输入类型标记接口。
|
static interface |
KeyStore.LoadStoreParameter
|
static class |
KeyStore.PasswordProtection
一种基于口令的
ProtectionParameter 实施。
|
static class |
KeyStore.PrivateKeyEntry
一个
KeyStore 条目,持有
PrivateKey 和相应的证书链。
|
static interface |
KeyStore.ProtectionParameter
一个私钥保护参数标记接口。
|
static class |
KeyStore.SecretKeyEntry
一个
KeyStore 条目,持有
SecretKey 。
|
static class |
KeyStore.TrustedCertificateEntry
一个
KeyStore 进入认为可信的
Certificate 。
|
Modifier | Constructor and Description |
---|---|
protected |
KeyStore(KeyStoreSpi keyStoreSpi, Provider provider, String type)
创建一个密钥存储给定类型的对象,并封装了提供程序实现(SPI对象)在这。
|
Modifier and Type | Method and Description |
---|---|
Enumeration<String> |
aliases()
列出所有这个密钥库的别名。
|
boolean |
containsAlias(String alias)
检查给出的别名存在这个密钥库。
|
void |
deleteEntry(String alias)
删除条目由给定的别名从密钥库确定。
|
boolean |
entryInstanceOf(String alias, 类<? extends KeyStore.Entry> entryClass)
确定是否为指定的
alias keystore
Entry 是指定
entryClass 实例或类。
|
Certificate |
getCertificate(String alias)
返回与给定别名关联的证书。
|
String |
getCertificateAlias(Certificate cert)
返回(化名)名称的第一个条目匹配给定的密钥证书证书。
|
Certificate[] |
getCertificateChain(String alias)
返回与给定别名关联的证书链。
|
Date |
getCreationDate(String alias)
返回给定别名标识的条目的创建日期。
|
static String |
getDefaultType()
返回默认的密钥库类型的
keystore.type 安全属性中指定,或字符串“硕”(“java库”的缩写)如果没有这种属性的存在。
|
KeyStore.Entry |
getEntry(String alias, KeyStore.ProtectionParameter protParam)
获取指定别名与指定参数保护密钥库
Entry 。
|
static KeyStore |
getInstance(String type)
返回一个指定类型的对象库。
|
static KeyStore |
getInstance(String type, Provider provider)
返回一个指定类型的对象库。
|
static KeyStore |
getInstance(String type, String provider)
返回一个指定类型的对象库。
|
Key |
getKey(String alias, char[] password)
返回与给定别名关联的密钥,使用给定的密码来恢复它。
|
Provider |
getProvider()
返回此密钥库提供者。
|
String |
getType()
返回此密钥库的类型。
|
boolean |
isCertificateEntry(String alias)
返回true如果条目被给定的别名是由一个叫
setCertificateEntry 创建,或通过调用创建一
TrustedCertificateEntry
setEntry 。
|
boolean |
isKeyEntry(String alias)
返回true如果条目被给定的别名是由一个叫
setKeyEntry 创建,或通过调用创建一
PrivateKeyEntry 或
SecretKeyEntry
setEntry 。
|
void |
load(InputStream stream, char[] password)
加载这个密钥库从给定的输入流。
|
void |
load(KeyStore.LoadStoreParameter param)
加载这个密钥使用给定的
LoadStoreParameter 。
|
void |
setCertificateEntry(String alias, Certificate cert)
将给定的可信证书分配给给定的别名。
|
void |
setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam)
节省下的密钥库
Entry 指定别名。
|
void |
setKeyEntry(String alias, byte[] key, Certificate[] chain)
指定给定的键(已被保护)给给定的别名。
|
void |
setKeyEntry(String alias, Key key, char[] password, Certificate[] chain)
将给定的密钥分配给给定的别名,用给定的密码保护它。
|
int |
size()
这个密钥库检索条目数量。
|
void |
store(KeyStore.LoadStoreParameter param)
商店这个密钥使用给定的
LoadStoreParameter 。
|
void |
store(OutputStream stream, char[] password)
商店这个密钥库到给定的输出流,其完整性与给定的密码保护。
|
protected KeyStore(KeyStoreSpi keyStoreSpi, Provider provider, String type)
keyStoreSpi
-提供程序实现。
provider
-供应商。
type
-密钥类型。
public static KeyStore getInstance(String type) throws KeyStoreException
该方法通过注册安全提供商列表,从最开始的首选供应商。一个新的密钥库对象封装keystorespi实施支持指定类型的第一个提供程序返回。
注意,注册商的列表可以通过Security.getProviders()
检索方法。
type
-密钥库的类型。看到关于标准库类型信息在
Java Cryptography Architecture Standard Algorithm Name Documentation密钥库段。
KeyStoreException
-如果没有供应商的支持为指定的类型keystorespi实施。
Provider
public static KeyStore getInstance(String type, String provider) throws KeyStoreException, NoSuchProviderException
一个新的密钥库对象封装keystorespi实现从指定的提供程序返回。指定的提供程序必须在安全提供程序列表中注册。
注意,注册商的列表可以通过Security.getProviders()
检索方法。
type
-密钥库的类型。看到关于标准库类型信息在
Java Cryptography Architecture Standard Algorithm Name Documentation密钥库段。
provider
-提供者的名称。
KeyStoreException
-如果一个指定类型的keystorespi执行不可从指定的供应商。
NoSuchProviderException
-如果指定的供应商不在安全提供商注册名单。
IllegalArgumentException
如果提供者名称为空或空。
Provider
public static KeyStore getInstance(String type, Provider provider) throws KeyStoreException
一个新的密钥库对象封装keystorespi实现从指定的提供程序对象返回。请注意,指定的提供程序对象不必在提供者列表中注册。
type
-密钥库的类型。看到关于标准库类型信息在
Java Cryptography Architecture Standard Algorithm Name Documentation密钥库段。
provider
-供应商。
KeyStoreException
-如果指定类型的keystorespi执行不可从指定的提供程序对象。
IllegalArgumentException
-如果指定的提供程序是无效的。
Provider
public static final String getDefaultType()
keystore.type
安全属性中指定,或字符串“硕”(“java库”的缩写)如果没有这种属性的存在。
默认的密钥类型可以用,不想用一个硬编码的密钥类型时调用的方法之一getInstance
应用使用,并要提供一个默认的密钥库类型在用户不指定自己的。
默认的密钥类型,可以通过设置的keystore.type
安全属性的值所需的密钥类型的改变。
keystore.type
安全属性中指定,或字符串“硕”如果没有这种属性的存在。
security properties
public final Provider getProvider()
public final String getType()
public final Key getKey(String alias, char[] password) throws KeyStoreException, NoSuchAlgorithmException, UnrecoverableKeyException
setKeyEntry
别名关联,或通过调用一个
PrivateKeyEntry
或
SecretKeyEntry
setEntry
。
alias
-别名
password
-恢复密钥的密码
KeyStoreException
如果keystore尚未初始化(加载)。
NoSuchAlgorithmException
如果恢复键不能发现算法
UnrecoverableKeyException
-如果钥匙无法恢复(例如,给定的密码是错误的)。
public final Certificate[] getCertificateChain(String alias) throws KeyStoreException
setKeyEntry
别名关联,或通过调用一个
PrivateKeyEntry
setEntry
。
alias
-别名
KeyStoreException
如果keystore尚未初始化(加载)。
public final Certificate getCertificate(String alias) throws KeyStoreException
如果给定的别名标识被调用的setCertificateEntry
创建了一个条目,或通过调用创建setEntry
与TrustedCertificateEntry
,那么可信证书包含在输入返回。
如果给定的别名标识被调用的setKeyEntry
创建了一个条目,或通过调用创建一PrivateKeyEntry
setEntry
,然后返回,进入证书链的第一个元素。
alias
-别名
KeyStoreException
如果keystore尚未初始化(加载)。
public final Date getCreationDate(String alias) throws KeyStoreException
alias
-别名
KeyStoreException
如果keystore尚未初始化(加载)。
public final void setKeyEntry(String alias, Key key, char[] password, Certificate[] chain) throws KeyStoreException
如果给定的键的类型是java.security.PrivateKey
,它必须伴随着相应的公共密钥证书链认证。
如果给定的别名已经存在,与它相关的密钥信息是由给定的键重写(可能是证书链)。
alias
-别名
key
-与别名关联的关键
password
-保护密钥的密码
chain
-相应的公钥证书链(如果给定的关键是型
java.security.PrivateKey
只需要)。
KeyStoreException
如果keystore尚未初始化(加载),给定的键不能保护,或操作失败的其他原因
public final void setKeyEntry(String alias, byte[] key, Certificate[] chain) throws KeyStoreException
如果受保护的关键是java.security.PrivateKey
型,它必须伴随着相应的公共密钥证书链认证。如果底层的库实现的类型是jks
,key
必须被编码为一个EncryptedPrivateKeyInfo
在PKCS 8标准定义的#。
如果给定的别名已经存在,与它相关的密钥信息是由给定的键重写(可能是证书链)。
alias
-别名
key
的关键(在保护格式)是与别名关联
chain
-相应的公钥证书链(唯一有用的如果受保护的关键是型
java.security.PrivateKey
)。
KeyStoreException
如果keystore尚未初始化(加载),或如果操作其他原因失败。
public final void setCertificateEntry(String alias, Certificate cert) throws KeyStoreException
如果给定的别名识别现有项目通过调用setCertificateEntry
创建,或通过调用创建一TrustedCertificateEntry
setEntry
,可信证书在现有的条目是由给定的证书中重写。
alias
-别名
cert
-证书
KeyStoreException
如果keystore尚未初始化,或给定的别名已经存在不确定项包含一个可信的证书,或操作失败的其他原因。
public final void deleteEntry(String alias) throws KeyStoreException
alias
-别名
KeyStoreException
如果keystore尚未初始化,如果项目不能删除。
public final Enumeration<String> aliases() throws KeyStoreException
KeyStoreException
如果keystore尚未初始化(加载)。
public final boolean containsAlias(String alias) throws KeyStoreException
alias
-别名
KeyStoreException
如果keystore尚未初始化(加载)。
public final int size() throws KeyStoreException
KeyStoreException
如果keystore尚未初始化(加载)。
public final boolean isKeyEntry(String alias) throws KeyStoreException
setKeyEntry
创建,或通过调用创建一
PrivateKeyEntry
或
SecretKeyEntry
setEntry
。
alias
-密钥库进入被检查的别名
KeyStoreException
如果keystore尚未初始化(加载)。
public final boolean isCertificateEntry(String alias) throws KeyStoreException
setCertificateEntry
创建,或通过调用创建一个
TrustedCertificateEntry
setEntry
。
alias
-密钥库进入被检查的别名
KeyStoreException
如果keystore尚未初始化(加载)。
public final String getCertificateAlias(Certificate cert) throws KeyStoreException
匹配给定的每个密钥入境证此方法的尝试。如果条目被认为是由一个叫setCertificateEntry
创建,或通过调用创建一个TrustedCertificateEntry
setEntry
,然后给定的证书相比,入门的证书。
如果条目被认为是由一个叫setKeyEntry
创建,或通过调用创建一个PrivateKeyEntry
setEntry
,然后给定的证书相比,入门的证书链的第一个元素。
cert
-证书匹配。
KeyStoreException
如果keystore尚未初始化(加载)。
public final void store(OutputStream stream, char[] password) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
stream
-输出流,这个密钥写入。
password
-生成密钥完整性检查密码
KeyStoreException
如果keystore尚未初始化(加载)。
IOException
-如果有一个I/O问题的数据
NoSuchAlgorithmException
如果适当的数据完整性算法无法发现
CertificateException
-如果证书包含在密钥库的数据无法保存
public final void store(KeyStore.LoadStoreParameter param) throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException
LoadStoreParameter
。
param
-
LoadStoreParameter
指定如何存储密钥库,这可能是
null
IllegalArgumentException
-如果给定的
LoadStoreParameter
输入不认可
KeyStoreException
如果keystore尚未初始化(加载)
IOException
-如果有一个I/O问题的数据
NoSuchAlgorithmException
如果适当的数据完整性算法无法发现
CertificateException
-如果证书包含在密钥库的数据无法保存
public final void load(InputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException
密码可以解锁密钥库(如密钥库驻留在硬件令牌设备),或检查密钥库数据的完整性。如果没有给出完整性检查的密码,则不执行完整性检查。
为了创建一个空的密钥,如果密钥无法初始化流,通过null
为stream
论点。
注意,如果该密钥已经被加载,它是重新初始化并重新加载,从给定的输入流。
stream
-从密钥库中加载输入流,或
null
password
用于检查密钥库完整的密码,该密码用于解锁密钥库,或
null
IOException
-如果有一个I / O或密钥库的数据格式的问题,如果需要密码但没有给出,如果给定的密码是不正确的。如果错误是由于一个错误的密码,该
IOException
的
cause
应该是一个
UnrecoverableKeyException
NoSuchAlgorithmException
如果用来检查密钥不能完整的被发现的算法
CertificateException
-如果在密钥的证书无法加载
public final void load(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException
LoadStoreParameter
。
注意,如果KeyStore已经被加载,它是重新初始化并重新加载,从给定的参数。
param
-
LoadStoreParameter
指定如何加载密钥库,这可能是
null
IllegalArgumentException
-如果给定的
LoadStoreParameter
输入不认可
IOException
-如果有一个I / O或密钥库的数据格式问题。如果错误是由于不正确的
ProtectionParameter
(如密码错误)的
IOException
的
cause
应该是一个
UnrecoverableKeyException
NoSuchAlgorithmException
如果用来检查密钥不能完整的被发现的算法
CertificateException
-如果在密钥的证书无法加载
public final KeyStore.Entry getEntry(String alias, KeyStore.ProtectionParameter protParam) throws NoSuchAlgorithmException, UnrecoverableEntryException, KeyStoreException
Entry
。
alias
获取密钥库
Entry
此别名
protParam
-用于保护
Entry
的
ProtectionParameter
,可
null
Entry
密钥,或
null
如果没有这样的入口
null
alias
NullPointerException
NoSuchAlgorithmException
如果回收项目不能发现算法
UnrecoverableEntryException
-如果指定
protParam
不足或无效
UnrecoverableKeyException
如果条目是一个
PrivateKeyEntry
或
SecretKeyEntry
和指定的
protParam
不包含恢复所需的关键信息(如密码错误)
KeyStoreException
如果keystore尚未初始化(加载)。
setEntry(String, KeyStore.Entry, KeyStore.ProtectionParameter)
public final void setEntry(String alias, KeyStore.Entry entry, KeyStore.ProtectionParameter protParam) throws KeyStoreException
Entry
指定别名。保护参数是用来保护
Entry
。
如果指定的别名的条目已经存在,它是重写。
alias
保存密钥库
Entry
下这个别名
entry
-
Entry
拯救
protParam
-用于保护
Entry
的
ProtectionParameter
,可
null
NullPointerException
-如果
alias
或
entry
是
null
KeyStoreException
如果keystore尚未初始化(加载),或如果操作其他原因失败
getEntry(String, KeyStore.ProtectionParameter)
public final boolean entryInstanceOf(String alias, 类<? extends KeyStore.Entry> entryClass) throws KeyStoreException
alias
keystore
Entry
是指定
entryClass
实例或类。
alias
-别名
entryClass
-入门级
alias
keystore
Entry
是指定
entryClass
实例或类真,否则为假
NullPointerException
-如果
alias
或
entryClass
是
null
KeyStoreException
如果keystore尚未初始化(加载)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.