我们在ActiveMQ文档中尚未看到如何隐藏嵌入式码头版本。当我们在端口80上使用Web插座运输时,我们的穿透测试程序将其标记为安全线程。我们一直在使用配置文件Jetty.xml和参数进行播放,但没有成功。它已经针对其他项目(请参阅https://issues.apache.org/jira/browse/hadoop-13414(,
中的一个补丁到目前为止,我们一直在尝试更改Jetty.xml中的配置。
搜索码头属性后,这就是我们配置属性的属性的方式:
<bean id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
<property name="sendServerVersion" value="false">
</property>
</bean>
但是,这对版本的暴露没有影响。我们尝试了连接工厂的进一步尝试,但这也没有效果:
<bean id="invokeConnectors" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="Server" />
<property name="targetMethod" value="setConnectors" />
<property name="arguments">
<list>
<bean id="Connector" class="org.eclipse.jetty.server.ServerConnector">
<constructor-arg ref="Server" />
<constructor-arg>
<list>
<bean id="httpConnectionFactory" class="org.eclipse.jetty.server.HttpConnectionFactory">
<constructor-arg ref="httpConfig"/>
</bean>
</list>
</constructor-arg>
<!-- see the jettyPort bean -->
<property name="host" value="#{systemProperties['jetty.host']}" />
<property name="port" value="#{systemProperties['jetty.port']}" />
</bean>
</list>
</property>
</bean>
我们是在正确的轨道上,还是需要由ActiveMQ的代码库解决?
这就是我们显示版本的方式:
#nmap -sV -p80 localhost
Starting Nmap 7.70 ( https://nmap.org ) at 2018-04-23 18:16 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000098s latency).
PORT STATE SERVICE VERSION
80/tcp open http Jetty 9.2.22.v20170606
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.34 seconds
编辑:我们在ActiveMQ JIRA中收到了一个答案,该答案表明它将需要一些代码修改在ActiveMQ项目中。如果当前状态发生变化,我们将更新此问题。当前的ActiveMQ为5.15.3。
引用链接问题的蒂姆·贝恩:
以来org.apache.activemq.transport.discovery.http.embeddedjettyserver.start((通过调用新的(没有弹簧注射(来创建其服务器,该方法的代码没有提供任何指定httpcconfiguration,htttpconfiguration,改变此行为的能力需要更改代码。org.apache.activemq.transport.webtransportserversupport中也有类似的代码,也没有任何能够指定将禁用版本号发送的httpconfiguration。
。
使用...
org.eclipse.jetty.server.HttpConfiguration.setSendServerVersion(false);
...是正确的设置。
但是,您无法在启动服务器后更改此操作。
服务器本身的启动,是您唯一可以进行此更改的地方。
创建连接器/初始化是使用此设置的唯一位置。
这是因为该设置在启动期间传播到许多组件(HTTP/1 Generator,HTTP/2 Generator,errorPage Generator,Websocket升级过程等(