# WebLogic 服务器

### 自动化安装 <a href="#auto" id="auto"></a>

解压缩后，进入到解压后的目录中（如rasp-20170721），在终端中执行以下命令，

**如果你要开启远程管理**，请先参考 [管理后台 - 添加主机](https://github.com/baidu-security/openrasp-docs-old/blob/main/setup/panel.html#add-host) 文档，找到 `app_id/app_secret/backend_url` 三个关键参数，然后执行如下命令，

```bash
java -jar RaspInstall.jar -install <weblogic_domain_home> -backendurl http://XXX -appsecret XXX -appid XXX
```

**如果你只是运行单机版**，只需要指定 -install 参数，

```bash
java -jar RaspInstall.jar -install <weblogic_domain_home>
```

安装后，需要重启 WebLogic 服务器生效。

**不重启安装**

以上方式安装成功之后需要重启服务器，如果在服务器启动的情况下，不重启安装 OpenRASP，需要在以上命令后面增加 -pid 参数指定运行的服务器进程 id，JDK6 - JDK8 样例命令如下，

```
# <server_pid> 为 weblogic 进程 id
# $JAVA_HOME 为 jdk 根目录环境变量，如果未指定该环境变量，替换为 jdk 的完整根目录
java -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar -jar RaspInstall.jar -install <weblogic_domain_home> -pid <server_pid>
```

\*\* jdk9 ～ jdk11 不支持不重启安装 \*\*

### 手动安装（Linux） <a href="#manual-linux" id="manual-linux"></a>

#### 1. 安装软件 <a href="#manual-linux-install" id="manual-linux-install"></a>

进入到需要安装插件的domain目录下，如 e.g `/opt/wls122212/base_domain`

复制安装包下面的 `rasp` 目录到当前目录

```bash
cp -R ~/Downloads/rasp-20170721/rasp .
```

OpenRASP 需要在 rasp 目录下释放一些动态链接库，所以还需要修改 rasp 目录的权限，e.g

```
chmod 777 -R rasp
```

#### 2. 配置 WebLogic <a href="#manual-linux-config" id="manual-linux-config"></a>

> 非集群方式

打开 `bin/startWebLogic.sh`, 找到 `JAVA_OPTIONS="${SAVE_JAVA_OPTIONS}"` 这一行，在该行下增加：

```bash
JAVA_OPTIONS="-javaagent:${DOMAIN_HOME}/rasp/rasp.jar ${JAVA_OPTIONS}"
```

> 集群方式

**方式一：通过weblogic的console**

* 访问weblogic的console，例如：<http://10.115.184.54:8001/console/console.portal>
* `环境`->`服务器`，找到要安装的server（本例为Server-0)![img](https://4222974077-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqmO3V0DYNdq501EE6igC%2Fuploads%2Fgit-blob-a0dd7958b8527ae7270312b99529c3bcace9c8b0%2Fweblogic-domain-1.jpg?alt=media)
* 点击进入Server-0，选择`服务器启动`，在参数框中，添加如下配置,保存退出

```bash
-javaagent:<agent_directory_full_path>/rasp/rasp.jar
```

![img](https://4222974077-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqmO3V0DYNdq501EE6igC%2Fuploads%2Fgit-blob-1699324daa6c740ddcf9fed1476a76ac8788157c%2Fweblogic-domain-2.jpg?alt=media)

* 重启Server-0之后，服务器生效![img](https://4222974077-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqmO3V0DYNdq501EE6igC%2Fuploads%2Fgit-blob-3d51eb1343b67e15370c20d744f84ddc039983f8%2Fweblogic-domain-3.jpg?alt=media)

**方式二：通过配置weblogic的config.xml文件**

找到`<weblogic-home>/user_projects/domains/base_domain/config`目录，打开`config.xml`文件,定位到需要安装rasp的`<server>/<server-start>/<arguments>`标签，在`<arguments>`标签内添加javaagent参数。

如果没有相应的标签可以手动添加，e.g

```bash
<server>
	<server-start>
		<arguments>-javaagent:/PATH/TO/DOMAIN_HOME/rasp/rasp.jar</arguments>
	</server-start>
</server>
```

重启安装rasp的server，服务器生效

#### 3. 验证安装是否成功 <a href="#manual-linux-verify" id="manual-linux-verify"></a>

访问 WebLogic 服务器，检查HTTP响应里是否包含 `X-Protected-By: OpenRASP` 字样，若出现则表示安装成功。若没有安装成功，请检查 WebLogic 是否有异常日志:

```
${DOMAIN_HOME}/servers/<安装rasp的server名字>/logs
```

### 手动安装（Windows）{#manual-window}

#### 1. 安装软件 <a href="#manual-window-install" id="manual-window-install"></a>

进入 WebLogic Domain 目录，e.g `C:\wls12212\user_projects\domains\base_domain`，并将压缩包内的 `rasp` 目录复制过来

#### 2. 配置 WebLogic <a href="#manual-window-config" id="manual-window-config"></a>

> 非集群模式

打开 `bin/startWebLogic.cmd`, 找到 `set JAVA_OPTIONS=%SAVE_JAVA_OPTIONS%"`这一行，在下面增加:

```bat
set JAVA_OPTIONS=-javaagent:%DOMAIN_HOME%\rasp\rasp.jar %JAVA_OPTIONS%
```

> 集群模式

同Linux的集群模式

#### 3. 验证安装是否成功 <a href="#manual-window-verify" id="manual-window-verify"></a>

访问 WebLogic 服务器，检查HTTP响应里是否包含 `X-Protected-By: OpenRASP` 字样，若出现则表示安装成功。若没有安装成功，请检查 WebLogic 是否有异常日志:

```
${DOMAIN_HOME}/servers/<安装rasp的server名字>/logs
```

### FAQ <a href="#faq" id="faq"></a>

#### 1. Weblogic 10.36 无法加载的问题 <a href="#faq-jrockit" id="faq-jrockit"></a>

Weblogic 10.36版本使用32位的JRockit JDK，若系统缺少32位的glibc，可能无法加载 openrasp.so。解决方法就是安装32位glibc，并再次尝试启动。

对于 CentOS 系统，你需要安装 `libgcc.i686`，否则会提示找不到 libgcc\_s.so.1 错误:

```
yum install -y ligbcc.i686
```

若安装过程中出现 libgcc multilib 版本保护问题，e.g

```
Error: Multilib version problems found. This often means that the root
       cause is something else and multilib version checking is just
       pointing out that there is a problem. Eg.:

Protected multilib versions: libgcc-4.8.2-8.el6.x86_64 != libgcc-4.4.7-11.el6.i686
```

可尝试先升级 libgcc 到最新版本，再安装32位的 libgcc，e.g

```
yum install -y libgcc
yum install -y ligbcc.i686
```

之后尝试启动即可。
