3.6.2 TrustManagerFactory

TrustManagerFactory类是用于管理信任材料的管理器工厂。


/此类充当基于信任材料源的信任管理器的工厂。每个信任管理器管理特定类型的由安全套接字使用的信任材料。信任材料是基于KeyStore和/或提供者特定的源。/

public class TrustManagerFactory

extends Object


❑方法详述

TrustManagerFactory类的操作与KeyManagerFactory类很相似,同样需要getInstance()工厂方法获得实例化对象。

我们可以通过指定算法名称的方式获得实例化对象,方法如下所示:


//返回充当信任管理器工厂的TrustManagerFactory对象。

public final static TrustManagerFactory getInstance(String algorithm)


或者,指定算法名称的同时指定该算法的提供者,方法如下所示:


//返回充当信任管理器工厂的TrustManagerFactory对象。

public final static TrustManagerFactory getInstance(String algorithm, Provider provider)

//返回充当信任管理器工厂的TrustManagerFactory对象。

public final static TrustManagerFactory getInstance(String algorithm, String provider)


当我们不知道该选用何种算法实例化对象时,可使用默认算法,方法如下所示:


//获取默认的TrustManagerFactory算法名称。

public final static String getDefaultAlgorithm()


获得实例化对象后,需要通过以下方法完成初始化,这一点和KeyManagerFactory类如出一辙:


//用证书授权源和相关的信任材料初始化此工厂。

public final void init(KeyStore ks)

//使用特定于提供者的信任材料源初始化此工厂。

public final void init(ManagerFactoryParameters spec)


我们可以通过如下方法获得信任管理器数组:


//为每种信任材料返回一个信任管理器。

public final TrustManager[]getTrustManagers()


TrustManagerFactory类是引擎类,同样提供了方法如下所示:


//返回此TrustManagerFactory对象的算法名称。

public final String getAlgorithm()

//返回此TrustManagerFactory对象的提供者。

public final Provider getProvider()


❑实现示例

我们可通过代码清单3-27构建信任管理工厂。

代码清单3-27 构建信任管理工厂


//实例化TrustManagerFactory对象

TrustManagerFactory trustManagerFactory=TrustManagerFactory.getInstance("SunX509");

//加载密钥库文件

FileInputStream is=new FileInputStream("D:\x.keystore");

//实例化KeyStore对象

KeyStore ks=KeyStore.getInstance("JKS");

//加载密钥库

ks.load(is,"password".toCharArray());

//关闭流

is.close();

//初始化TrustManagerFactory对象

trustManagerFactory.init(trustkeyStore);


获得密钥管理工厂和信任材料管理工厂后做什么用呢?我们将在后面介绍。