Java与防火墙:如何让Java应用程序拥有自己的规则集

8
假设我编写了一个需要访问互联网的Java应用程序。通常防火墙会弹出窗口询问是否允许访问。现在我有两个选择,一是允许访问互联网,二是使用特定规则。由于我只检查一个Web服务,所以我会设置一个仅限于该端口的规则来限制访问。
现在我有另一个需要访问互联网的Java应用程序。如果我决定给第一个应用程序完全访问权限,那么第二个应用程序也将具有完全访问权限。对于上述规则集的解决方案,我需要添加另一个规则或者放弃并授予完全访问权限,从而也为应用程序1授予完全访问权限。
我想你已经看出我的问题了。一段时间以前,我遇到了同样的情况,尝试了一两个将JAR转换为可执行文件的包装器。最终我发现它们只是启动了JVM,导致通常的Java二进制文件打开了Internet连接。
所以我的问题是:我有哪些选项可以允许用户为每个Java应用程序指定不同的防火墙规则?
编辑:在阅读第一条评论后,我想明确一下,我不是在考虑如何配置防火墙,而是希望Java应用程序本身有一种更或多少独特的方式来识别自己或处理网络访问。

1
这是一个关于如何为某些特定但未命名的操作系统配置某个特定但未命名的个人防火墙产品的问题。应该去SuperUser提问。 - Nordic Mainframe
@Luther 不,我认为你理解错了。这更多是关于如何让Java应用程序在防火墙中以不同的身份标识自己的问题。因此,我认为这更多是编码方面的问题或如何部署Java应用程序的问题。防火墙规则的定义应该像为任何其他非Java应用程序定义它们一样。 - sjngm
4个回答

4

我该如何将一个包指定为“codeBase”?文档只提到了通过“file://”和一些Web内容来引用本地内容。 - sjngm

2

防火墙就像半透膜,允许出站连接但不允许入站连接:

                      |
 Outside world <===== | ====== Your computer
                      |
                   Firewall [OK]


                      |
 Outside world ====== X =====> Your computer
                      |
                   Firewall [Disallowed]

有一种方法可以解决这个问题,那就是设置一个代理服务器,该服务器位于防火墙之外,并接受来自外部世界的入站连接以及来自您的“真实”服务器的入站连接。代理服务器可以将外部请求路由到其中一个服务器的入站套接字:

                                   |
 Outside world ===> [Proxy] <===== | ====== Your computer
                                   |
                              Firewall [OK]

话虽如此,如果不了解您的确切情况,这可能不是最佳的设计选择。例如,您可能正在做一些实际上并不需要运行服务器的事情,或者您确实希望运行服务器,但也许应该在云计算基础设施上运行一个服务器。如果没有更多详细信息说明您希望实现什么,很难推荐实际的设计。


0

将您的jvm与产品一起发布,并编写一个脚本来启动它并设置必要的变量,使其独立于系统上的任何其他jvm。

例如 类路径 /app/launch/java -jar jar.file

这样只会启动您的Java版本。


0

解决这个问题的简单愚蠢方法是将java.exe复制并重命名为不同的名称。

如果您有两个应用程序,请将java[w].exe重命名为:

MyApp.exe

MyApp2.exe

然后你可以根据可执行文件在防火墙中放置特定的规则。


哦不。如果安装了新的Java版本怎么办?那我就必须将这个新的二进制文件复制到所有可执行文件中。根据墨菲定律,我至少会错过一个,最终会有很多不同的Java版本。 - sjngm
@sjngm 你不希望你的应用程序在安装新版本的Java后发生变化。这意味着你必须支持任何新版本的Java而无需通过QA运行它。通过将已知测试过的VM版本与您的产品一起包含,您可以确保拥有一个已知的系统。考虑到这个想法,当发布新版本的Java时,复制并重命名java.exe并不是问题。任何其他包装器在升级Java版本时都会遇到同样的问题。您的另一种选择是明确链接到jvm.dll并在本地可执行文件中生成自己的VM实例。 - Andrew T Finnell
mklink firewall.app1.exe java.exe - mustafa öztürk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接