第 11 章 规则软件包签名(Rule Package Signing)的客户端配置
阅读本节以学习规则软件包签名和密钥库的配置。
规则软件包签名(Rule Package Signing)确保了规则软件包在从 JBoss 企业版 BRMS 平台服务器下载到客户端应用程序时不会损坏或更改。在缺省情况下,规则软件包签名是禁用的。
重要
红帽强烈推荐在产品环境里启用规则软件包签名。
规则软件包签名是用公共密钥加密来实现的。JDK 命令
keytool
用于创建私有密钥和对应的公共数字证书。用私有密钥签名的软件包只可以用匹配的证书来检验。私有密钥存储在一个名为 keystore 的文件里,服务器使用它来自动为每个软件包签名。密钥里为每个客户端应用程序可用的公共证书被称为信任库(truststore)。信任库里的证书用于检验签名软件包的真实性。在下载过程中损坏或被修改的规则软件包将被客户端拒绝,因为其签名不再和证书匹配。
下面的过程描述了如何为规则软件包签名配置客户端应用程序。这涉及到设置客户端的几个属性。这些属性可以在程序里通过
System.setProperty
设置。org.drools.core.util.KeyStoreHelper
类包含几个代表这些属性的常量。
在执行这个任务之前,你需要:
- 已经安装了 JBoss 企业级 Web 平台并针对规则软件包签名进行了正确的配置。
- JBoss 企业级 Web 平台服务器所使用的包含数字证书的信任库的 URL。
- 信任库的密码(如果设置了的话)。
过程 11.1. 规则软件包签名(Rule Package Signing)的客户端配置
启用签名
将drools.serialization.sign
属性设置为true
。System.setProperty( KeyStoreHelper.PROP_SIGN, "true" );
System.setProperty( KeyStoreHelper.PROP_SIGN, "true" );
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置 TrustStore URL
设置drools.serialization.public.keyStoreURL
属性为信任库所在的 URL。如果信任库位于客户端的 classpath 里,这可以通过getClass().getResource()
方法来完成。例 11.1. 当信任库位于客户端的 classpath 里
URL trustStoreURL = getClass().getResource( "BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );
URL trustStoreURL = getClass().getResource( "BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 11.2. 当信任库位于 web 服务器上
URL trustStoreURL = new URL("http://brms.intranet/resources/BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );
URL trustStoreURL = new URL("http://brms.intranet/resources/BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 11.3. 当信任库位于本地文件系统里
URL trustStoreURL = new URL("file:///mnt/fileserve/rules-server/BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );
URL trustStoreURL = new URL("file:///mnt/fileserve/rules-server/BRMSTrustStore.keystore" ); System.setProperty( KeyStoreHelper.PROP_PUB_KS_URL, trustStoreURL.toExternalForm() );
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:设置密钥库的密码
通过drools.serialization.public.keyStorePwd
设置信任库的密码。只有访问信任库需要密码时才要设置这个属性。System.setProperty( KeyStoreHelper.PROP_PUB_KS_PWD, "sekretPasswordHere" );
System.setProperty( KeyStoreHelper.PROP_PUB_KS_PWD, "sekretPasswordHere" );
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 关于如何针对规则软件包签名配置服务器的说明,请参考『http://docs.redhat.com/docs/en-US/JBoss_Enterprise_BRMS_Platform/5/html/BRMS_Administrator_Guide』上的《BRMS 管理员指南》。
- 关于公共密钥加密的更多信息,请参考『http://en.wikipedia.org/wiki/Public-key_cryptography』。