SOAP 1.2 故障:SOAP-ENV:Receiver [无子代码]
SOAP 1.2 fault: SOAP-ENV:Receiver [no subcode]
我们有一个用 java 编写的 Web 服务(使用 Axis 1.4)。
我们使用 gSOAP (2.8.101) 在 C++ 代码中访问它。
我们正在使用 OpenSSL (1.1.1e)。
在 RHEL 8 上,我们看到 SOAP 1.2 故障。错误如下:
SOAP 1.2 故障:SOAP-ENV:Receiver [无子代码]
"Permission denied"
详细信息:在 tcp_connect()
中连接失败
相同的代码在 RHEL7 中运行良好。
关于如何解决这个问题有什么建议吗?
似乎 SELinux 正在阻止连接。要暂时允许连接,您可以使用 setenforce 0
。这不会在服务器重启后继续存在,因此如果您希望它继续存在,您需要将 SELinux 设置为在 /etc/selinux/config
.
中以 permissive
模式工作
要继续在 enforcing
模式下工作,根据应用程序,可能有一个内置的 SELinux 策略允许您将 SELinux 设置为 enforcing
的连接,只需启用适当的布尔值。您可以通过执行以下命令获取所有 SELinux 布尔值的列表:
getsebool -a # List all available SELinux booleans on your system
例如,要允许 HTTPD 脚本和模块连接到网络,请启用以下 SELinux 布尔值:
sudo setsebool -P httpd_can_network_connect on
如果您不想让 HTTPD 连接到任何端口,您可以使用适当的布尔值:
sudo setsebool -P httpd_can_network_connect_db on
这将允许 HTTPD 通过网络连接到数据库。如果没有适合您启用的布尔值,则您必须构建自己的策略。您可以使用 audit2allow -M
命令来做到这一点。例如,如果在 audit.log
中生成错误的命令是 httpd
,您可以执行以下操作:
sudo ausearch -c 'httpd' --raw | audit2allow -M my-policy
sudo semodule -X 300 -i my-policy.pp
通常,如果某项服务有可用的内置布尔值,则使用 audit2allow
来允许访问该服务并不是一个好的做法。如果没有适合您的特定服务的布尔值,请使用 audit2allow
作为最后的手段。
我们有一个用 java 编写的 Web 服务(使用 Axis 1.4)。 我们使用 gSOAP (2.8.101) 在 C++ 代码中访问它。 我们正在使用 OpenSSL (1.1.1e)。 在 RHEL 8 上,我们看到 SOAP 1.2 故障。错误如下: SOAP 1.2 故障:SOAP-ENV:Receiver [无子代码] "Permission denied" 详细信息:在 tcp_connect()
中连接失败相同的代码在 RHEL7 中运行良好。 关于如何解决这个问题有什么建议吗?
似乎 SELinux 正在阻止连接。要暂时允许连接,您可以使用 setenforce 0
。这不会在服务器重启后继续存在,因此如果您希望它继续存在,您需要将 SELinux 设置为在 /etc/selinux/config
.
permissive
模式工作
要继续在 enforcing
模式下工作,根据应用程序,可能有一个内置的 SELinux 策略允许您将 SELinux 设置为 enforcing
的连接,只需启用适当的布尔值。您可以通过执行以下命令获取所有 SELinux 布尔值的列表:
getsebool -a # List all available SELinux booleans on your system
例如,要允许 HTTPD 脚本和模块连接到网络,请启用以下 SELinux 布尔值:
sudo setsebool -P httpd_can_network_connect on
如果您不想让 HTTPD 连接到任何端口,您可以使用适当的布尔值:
sudo setsebool -P httpd_can_network_connect_db on
这将允许 HTTPD 通过网络连接到数据库。如果没有适合您启用的布尔值,则您必须构建自己的策略。您可以使用 audit2allow -M
命令来做到这一点。例如,如果在 audit.log
中生成错误的命令是 httpd
,您可以执行以下操作:
sudo ausearch -c 'httpd' --raw | audit2allow -M my-policy
sudo semodule -X 300 -i my-policy.pp
通常,如果某项服务有可用的内置布尔值,则使用 audit2allow
来允许访问该服务并不是一个好的做法。如果没有适合您的特定服务的布尔值,请使用 audit2allow
作为最后的手段。