Java 在OSGi捆绑包中使用https保护Web服务

Java 在OSGi捆绑包中使用https保护Web服务,java,web-services,security,osgi,Java,Web Services,Security,Osgi,我想保护在OSGi捆绑包中使用endpoint.publish()发布的webservice组件的通信。因此,我正在努力解决三个问题 如何使用信任库中的证书仅使用IP构建https发布服务器?因为此捆绑包在嵌入式计算机上运行,而使用该服务的客户端不知道机器名称 如何在包中加载*.jks密钥库?由于还有另一个类路径,我无法使用新文件(./truststore.jks)找到*.jks文件。是的,我在这里发现了类似的问题,但它们不起作用 我不想实施某种身份验证。现在,我在头文件中发送用户名和密码(这就

我想保护在OSGi捆绑包中使用endpoint.publish()发布的webservice组件的通信。因此,我正在努力解决三个问题

  • 如何使用信任库中的证书仅使用IP构建https发布服务器?因为此捆绑包在嵌入式计算机上运行,而使用该服务的客户端不知道机器名称
  • 如何在包中加载*.jks密钥库?由于还有另一个类路径,我无法使用新文件(./truststore.jks)找到*.jks文件。是的,我在这里发现了类似的问题,但它们不起作用
  • 我不想实施某种身份验证。现在,我在头文件中发送用户名和密码(这就是我想首先保护通信的原因)。在每次webservice方法调用中,有没有办法不检查头中的用户名/密码?因为我有大约20个已发布的方法,复制相同的检查代码是很奇怪的

  • 运行时是Java1.6,Equinox3.7.1。客户端是另一个web应用程序(使用php)

    一般来说,是否有安全发布Web服务的最佳实践(特别是在OSGi捆绑包方面)

    提前谢谢

    我将按顺序回答:

  • 在证书中使用IP地址作为公共名称(CN)可能不是一种好的形式。最好在本地(例如,在大多数系统的主机文件中)为该IP地址分配一个名称。或者,您也可以通过配置客户端跳过名称验证—在这种情况下,您接受CA颁发的任何证书。如果您对PKI有足够的控制权,例如如果您使用自签名证书,那么这仍然是一个选项

  • 可以使用
    InputStream
    加载密钥库(信任库是密钥库),并且可以为资源创建输入流。有关更多信息,请参阅

  • 尝试使用会话上下文将身份验证绑定到会话,而不是绑定到单个页面。显然,没有SSL这是不安全的,但是有了SSL你应该可以


  • 该客户端是另一个应用程序还是浏览器?该客户端是另一个web应用程序(使用php)。我已经回答了这些问题,但下次请每个问题只回答一个问题。谢谢您的回答。但是对于2。问题是,我无法加载任何文件,因为我没有“找到”它们。使用OSGi类路径与作为“普通”应用程序运行是不同的,但是可以使用OSGi中的资源,不是吗?例如,见。我很确定我的Eclipse插件有一些资源。。。