我使用的是JBoss 4.2.3.GA。在之前的任务中,我使用了JBoss支持的基本加密机制(WS-Security)。例如,我使用密钥库、信任库文件进行消息的加密和签名。通常情况下,在jboss-wsse-*文件中定义了在加密过程中必须使用的密钥别名(以标准方式)。我使用了JBoss in Action书中的ws安全配置。
这很好。加密效果很好。
但在我的当前任务中,我需要手动和动态地指定密钥别名。 任务描述:
我有几个配置文件。在每个配置文件中都可以指定要用于加密消息的公钥别名。
我有一个包含服务器私钥/公钥和将向服务器发送消息的客户端的公钥的密钥库。
我需要从配置文件中获取密钥别名,并使用指定的公钥加密消息(在客户端侧)。
- 所以我需要从密钥库中加载数据(它必须驻留在文件系统文件夹中,即在ear文件外部),获取相应的公钥,然后进行加密。
- 之后,我需要将消息发送到具有解密私钥的远程Web服务(服务器端)。
- 在这里,我看到了服务器端逻辑的几种变体:Web服务使用标准JBoss机制进行解密,或者我可以手动加载密钥库数据并手动进行解密。
那么问题是:
- 有没有办法为JBoss指定文件系统目录以从中加载密钥库?
- 我可以为标准的JBoss WSS机制指定加密别名,以允许JBoss在加密过程中使用此信息吗?
- 如果我必须手动进行加密/解密,那么我该如何将多个Java对象包装成WS消息并且然后使用必要的别名对其进行加密和如何手动将此消息发送到远程Web服务?
我只是不知道如何开始,要使用什么框架,甚至是否需要使用外部(非JBoss)框架来完成这些操作...