强化WildFly通信安全:HTTPS配置指南
立即解锁
发布时间: 2025-08-20 00:15:10 阅读量: 6 订阅数: 19 


WildFly实战:配置、部署与管理
### 强化WildFly通信安全:HTTPS配置指南
在当今数字化时代,网络安全至关重要。对于WildFly应用服务器而言,确保通信安全是保障应用稳定运行和数据安全的关键。本文将详细介绍如何使用HTTPS协议来保护特定应用以及WildFly管理控制台,通过具体的操作步骤和代码示例,帮助你实现安全的通信环境。
#### 1. 禁用HTTP监听器的注意事项
在进行WildFly的安全配置时,禁用HTTP监听器需要格外注意,因为它被其他子系统(如ejb3和webservices)引用,这些子系统与http-remoting-connector相关,而http-remoting-connector又绑定到了HTTP监听器。禁用HTTP监听器后,应用将无法通过HTTP访问。
#### 2. 使用HTTPS保护特定应用
##### 2.1 准备工作
- **创建临时文件夹**:在终端窗口中执行以下命令,创建一个临时文件夹来运行WildFly。
```bash
$ cd $WILDFLY_HOME
$ cp -a standalone sec-std-node-2
```
- **创建密钥库**:密钥库用于加密特定应用的数据流量。在新的终端窗口中运行以下代码:
```bash
$ cd $WILDFLY_HOME
$ cd sec-std-node-2/configuration
$ keytool -v -genkey -alias wildfly.ssl.app -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -keystore wildfly.ssl.app.keystore -storepass keystore.2015 -keypass alias.2015
```
按照提示输入相关信息,如姓名、组织单位、组织名称、城市、州/省和国家代码等。确认信息无误后,将生成一个2048位的RSA密钥对和自签名证书,有效期为90天。
- **检查密钥库完整性**:执行以下命令检查密钥库的完整性:
```bash
$ keytool -list -v -keystore wildfly.ssl.app.keystore
```
输入密钥库密码后,将显示密钥库的详细信息,确保一切正常。
- **准备测试应用**:需要两个应用`ssl-example`和`no-ssl-example`,可以在GitHub仓库中找到。如果之前跳过了相关步骤,请参考相关说明下载所需的源代码和项目。
- **构建应用**:执行以下命令构建应用:
```bash
$ cd ~/WFC/github/wildfly-cookbook
$ mvn -e clean package -f ssl-example/pom.xml
$ mvn -e clean package -f no-ssl-example/pom.xml
```
- **复制应用工件**:将构建好的应用工件`no-ssl-example.war`和`ssl-example.war`(位于各自的`target`文件夹下)复制到本地的`$WILDFLY_HOME`文件夹中。
##### 2.2 配置WildFly
WildFly有两种操作模式:独立模式(Standalone)和域模式(Domain),下面分别介绍两种模式下的配置步骤。
**独立模式**
- **启动WildFly实例**:在终端中执行以下命令启动WildFly实例:
```bash
$ cd $WILDFLY_HOME
$ ./bin/standalone.sh -Djboss.server.base.dir=sec-std-node-2
```
- **连接到WildFly CLI并执行配置命令**:在另一个终端窗口中连接到WildFly CLI,并执行以下命令:
```bash
$ cd $WILDFLY_HOME
$ ./bin/jboss-cli.sh --connect
[standalone@localhost:9990 /] /core-service=management/security-realm=AppSSLRealm:add()
[standalone@localhost:9990 /] /core-service=management/security-realm=AppSSLRealm/server-identity=ssl:add(keystore-path=wildfly.ssl.app.keystore, keystore-relative-to=jboss.server.config.dir,keystore-password=keystore.2015, alias=wildfly.ssl.app, key-password=alias.2015)
[standalone@localhost:9990 /] :reload()
[standalone@localhost:9990 /] /subsystem=undertow/server=secure-server:add()
[standalone@localhost:9990 /] :reload
[standalone@localhost:9990 /] /subsystem=undertow/server=secure-server/https-listener=https:add(socket-binding=https, security-realm=AppSSLRealm)
[standalone@localhost:9990 /] /subsystem=undertow/server=secure-server/host=secure-host:add()
[standalone@localhost:9990 /] /subsystem=undertow/server=secure-server:write-attribute(name=default-host,value=secure-host)
[standalone@localhost:9990 /] :reload
```
**域模式**
- **创建临时文件夹**:在终端中执行以下命令,创建一个临时文件夹来在域模式下操作WildFly。
```bash
$ cd $WILDFLY_HOME
$ cp -a domain sec-dmn-2
```
- **复制密钥库**:将之前创建的密钥库复制到新的文件夹中。
```bash
$ cp sec-std-node-2/configuration/wildfly.ssl.app.keystore sec-dmn-2/configuration
```
- **启动WildFly域模式**:在终端中执行以下命令启动WildFly域模式。
```bash
$ cd $WILDFLY_HOME
$ ./bin/domain.sh -Djboss.domain.base.dir=sec-dmn-2
```
- **连接到WildFly CLI并执行配置命令**:在另一个终端窗口中连接到WildFly CLI,并执行以下命令:
```bash
[domain@localhost:9990 /] /host=master/core-service=management/security-realm=AppSSLRealm:add()
[domain@localhost:9990 /] /host=master/core-service=management/security-realm=AppSSLRealm/server-identity=ssl:add(keystore-path=wildfly.ssl.app.keystore,keystore-relative-to=jboss.domain.config.dir,keystore-password=keystore.2015,alias=wildfly.ssl.app,key-password=alias.2015)
[domain@localhost:9990 /] reload --host=master
[domain@localhost:9990 /] /profile=full/subsystem=undertow/server=secure-server:add()
[domain@localhost:9990 /] reload --host=master
[domain@localhost:9990 /] /profile=full/subsystem=undertow/server=secure-server/https-listener=https:add(socket-binding=https,security-realm=AppSSLRealm)
[domain@localhost:9990 /] /profile=full/subsystem=undertow/server=secure-server/host=secure-host:add()
[domain@localhost:9990 /] /profile=full/subsystem=undertow/server=secure-server:write-attribute(name=default-host,value=secure-host)
[domain@localhost:9990 /] reload --host=master
```
##### 2.3 测试配置
- **部署应用**:使用WildFly CLI部署应用:
```bash
[standalone@localhost:9990 /] deploy no-ssl-example.war
[standalone@localhost:9990 /] deploy ssl-example.war
```
在域模式下,使用以下命令部署应用:
```bash
[domain@localhost:9990 /] deploy no-ssl-example.war --server-groups=main-server-group
[domain@localhost:9990 /] deploy ssl-example.war --server-groups=main-server-group
```
- **测试应用访问**:打开浏览器,分别访问以下URL进行测试:
- `http://localhost:8080/no-ssl-example`
- `https://localhost:8443/ssl-example`
通过以上步骤,你可以看到`ssl-example`应用只能通过HTTPS访问,而`no-ssl-example`应用只能通过HTTP访问。
#### 3. 使用HTTPS保护WildFly管理控制台
##### 3.1 准备工作
- **创建临时文件夹**:在终端窗口中执行以下命令,创建一个临时文件夹来运行WildFly。
```bash
$ cd $WILDFLY_HOME
$ cp -a standalone sec-std-node-mgmt
```
- **创建密钥库**:在新的终端窗口中执行以下命令创建密钥库:
```bash
$ cd $WILDFLY_HOME
$ cd sec-std-node-mgmt/configuration
$ keytool -v -genkey -alias wildfly.management -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -keystore wildfly.managemen
```
0
0
复制全文
相关推荐










