3

我们有一个应用程序,其中嵌入式设备通过 Apache 与 weblogic 对话。Weblogic 和 Apache 在同一个 Solaris 服务器上,我们使用 Apache 的 weblogic 模块。

通信通过http工作

它不适用于 https,尽管问题似乎与 https 没有直接关系(SSL 会话协商得很好,并且发生了一些来回)。使用 https 时,设备处理通信的方式似乎有所不同。

我们希望看到 http/https 请求和响应来调试它。

我们可以使用(例如)wireshark 来捕获设备和服务器之间的数据,但是这是加密的,所以帮助不大。Wireshark(或 snoop)看不到 Apache 和 Weblogic 之间服务器上的本地流量。注意:在 Linux 上我们可以这样做——但在 Solaris 上不行。

我们实际上不需要 Wireshark 的低级数据包捕获 - 捕获 http 请求和响应的标头和正文就足够了。

有人知道该怎么做吗?是否有一个 apache mod 可以记录所有通过的请求和响应,也许(谷歌没有显示任何明显的东西)。还有其他创造性的方法吗?

4

4 回答 4

1

这可能会有所帮助。 http://httpd.apache.org/docs/2.2/mod/mod_log_forensic.html

于 2009-09-03T12:47:32.270 回答
1

我在 ServerFault 上了一个类似的问题,最好的答案似乎是在另一台机器上设置一个 TCP 代理,并强制所有通信通过那里反弹。

所以而不是:

Weblogic -> Apache

你将会拥有:

Weblogic -> (across network) TCP Proxy -> (across network) -> Apache

然后你可以做任何你想做的 tcpdump/wiresharking。我使用了运行良好的rinetd,但我知道至少在 Linux 上,内置的 inetd 也具有代理(和日志记录)的能力。

更新:如果你不能通过网络做任何事情,你可以使用相同的概念和类似TcpProxy或类似的东西(甚至可能是你的常规 inetd)来进行代理和日志记录。您甚至可以使用Netcat作为TCP 代理。其他人还建议使用 DTrace 来监听环回流量,因为它可以直接挂接到内核中。

于 2009-09-03T12:47:37.650 回答
1

我选择的 TCP 捕获程序称为balance

 _           _
| |__   __ _| | __ _ _ __   ___ ___
| '_ \ / _` | |/ _` | '_ \ / __/ _ \
| |_) | (_| | | (_| | | | | (_|  __/
|_.__/ \__,_|_|\__,_|_| |_|\___\___|
  this is balance 3.42
  Copyright (c) 2000-2007,2008
  by Inlab Software GmbH, Gruenwald, Germany.
  All rights reserved.

它被设计为一个 tcp 负载平衡器实用程序,但使用 -p 数据包转储标志它可以很好地记录所有进出流量。它以 ASCII 显示 ASCII 并将所有内容编码为十六进制。使用端口 >1024 时,它以非 root 用户身份运行良好。

于 2009-10-20T05:44:10.153 回答
0

您可以使用truss来捕获由其中一个进程执行的套接字读取和写入。

于 2009-09-06T11:25:00.080 回答