11.12. SSL 加密

11.12.1. 对 JBoss EAP 6 Web 服务器实施 SSL 加密

介绍

许多 web 应用程序都要求对客户端和服务器间的连接进行 SSL 加密,这也被称为 HTTPS 连接。你可以通过这个过程对服务器或服务器组启用 HTTPS

前提条件

  • 您需要一系列 SLL 加密密钥和加密证书。你可以从证书签名机构购买或者使用命令行工具来生成。关于使用红帽企业版 Linux 里的可用工具来生成加密密钥,请参考 第 11.12.2 节 “生成 SSL 密钥和证书”
  • 您的环境和设置的细节:
    • 证书文件所在的完整目录名。
    • 你的加密密钥的密码。
  • 连接域控制器或独立服务器的管理 CLI 命令。

注意

这个过程使用适合用于受管域的 JBoss EAP 6 配置的命令。如果你使用的是独立服务器,请从任何管理 CLI 命令的开头将 /profile=default 删除。

过程 11.39. 配置 JBoss Web 服务器以使用 HTTPS

  1. 添加新的 HTTPS 连接器。

    执行下列管理 CLI 命令来修改配置。这会创建一个新的加密连接器,名为 HTTPS。它使用 https 模式、https 套接字绑定(默认为 8443 端口),且被设置为安全的。

    例 11.36. 管理 CLI 命令

    /profile=default/subsystem=web/connector=HTTPS/:add(socket-binding=https,scheme=https,protocol=HTTP/1.1,secure=true)
    
  2. 执行下列管理 CLI 命令来设置协议为 TLSv1

    例 11.37. 管理 CLI 命令

    /profile=default/subsystem=web/connector=HTTPS/ssl=configuration/:write-attribute(name=protocol,value=TLSv1)
    
  3. 选择合适的加密套件

    加密套件由使用大量的加密类型的构建模块组成。第一个表列出了我们推荐的加密类型。第二个表列出可能用来和现有软件兼容的加密类型,它们不具备和我们所推荐的相等的安全性。

    警告

    Red Hat 推荐在加密套件(cipher-suite)里使用其白名单上的强密码。启用弱加密会导致重大的安全风险。在确定加密套件至前,请阅读 JDK 供应商的文档,因为它们可能会有兼容性问题。

    表 11.9. 推荐的加密类型

    具有 2048 位密钥和 OAEP 的 RSA
    CBC 模式的 AES-128
    SHA-256
    HMAC-SHA-256
    HMAC-SHA-1

    表 11.10. 其他加密类型

    具有大于 1024 密钥及传统 padding 的 RSA
    AES-192
    AES-256
    3DES(三重 DES,带有两个或三个 56 位的密钥)
    RC4(极不推荐)
    SHA-1
    HMAC-MD5
    关于连接器的 SSL 属性参数的完整列表,请参考 第 11.12.3 节 “SSL 连接器引用”
  4. 配置 SSL 加密证书和密钥。

    执行下列 CLI 命令来配置你的 SSL 证书,请用自己的值来替换例子里的值。这个例子假设密钥库被复制到服务器的配置目录,对于受管域来说,也就是EAP_HOME/domain/configuration/

    例 11.38. 管理 CLI 命令

    /profile=default/subsystem=web/connector=HTTPS/ssl=configuration:add(name=https,certificate-key-file="${jboss.server.config.dir}/keystore.jks",password=SECRET, key-alias=KEY_ALIAS, cipher-suite=CIPHERS)
    
  5. 部署应用程序。

    部署一个使用你已经配置好的配置集的应用程序到服务器组。如果你使用的是独立服务器,将这个应用程序部署至服务器。它的 HTTPS 请求将使用新的 SSL 加密的连接。