第 7 章 安全性
AMQ JMS 具有一系列与安全相关的配置选项,可以根据应用的需求来利用这些配置选项。
在应用程序中创建 Connection
时,用户名和密码等基本用户凭证应该直接传递给 ConnectionFactory
。但是,如果您使用的是 no-gument 工厂方法,也可以在连接 URI 中提供用户凭据。如需更多信息,请参阅 第 5.1 节 “JMS 选项” 部分。
另一个常见的安全考虑是使用 SSL/TLS。当 连接 URI 中指定了 amqps
URI 方案,且提供各种选项来配置行为时,客户端通过 SSL/TLS 传输连接到服务器。如需更多信息,请参阅 第 5.3 节 “SSL/TLS 选项” 部分。
与前面的项目一致,可能最好限制客户端,仅允许使用服务器可能提供的特定 SASL 机制,而不是从服务器支持的所有程序中选择。如需更多信息,请参阅 第 5.4 节 “AMQP 选项” 部分。
在接收的 ObjectMessage
上调用 getObject()
的应用程序可能希望限制在反序列过程中创建的类型。请注意,使用 AMQP 类型系统组成的消息正文不使用 ObjectInputStream
机制,因此不需要采取此措施。如需更多信息,请参阅 “序列化策略选项”一节 部分。
7.1. 启用 OpenSSL 支持
SSL/TLS 连接可以配置为使用原生 OpenSSL 实现来提高性能。要使用 OpenSSL,必须启用 transport.useOpenSSL
选项,且必须在类路径中提供 OpenSSL 支持库。
要在 Red Hat Enterprise Linux 中使用系统安装的 OpenSSL 库,在您的 POM 文件中安装 openssl
和 apr
RPM 软件包并在您的 POM 文件中添加以下依赖关系:
示例:添加原生 OpenSSL 支持
<dependency> <groupId>io.netty</groupId> <artifactId>netty-tcnative</artifactId> <version>2.0.39.Final-redhat-00001</version> <classifier>linux-x86_64-fedora</classifier> </dependency>
在 Netty 项目中 提供了 OpenSSL 库实施的列表。