为Java Webstart启用https

3
我有一个运行在HTTP服务器上的Swing应用程序。用户使用浏览器指向URL,并使用Java Web Start安装客户端。现在我需要为部署在HTTP服务器上的应用程序启用HTTPS访问。我正在使用JDK 1.5作为jnlp文件中支持的默认jdk。目前,我使用自签名证书对jar进行签名(默认情况下使用Sun的jarsigner、keytool等工具创建)。
希望能提供解决方案/步骤。
谢谢! Ramesh

你的问题是什么,确切地说?光从问题描述中我不太清楚哪里出了问题。 - Tomalak
3个回答

2
您需要在Web服务器上启用HTTPS。要获得证书,您需要向证书颁发机构(CA)如VeriSign或Thawte提供凭据和服务器主机名。他们可以为您提供由其根证书或某些中间证书签名的服务器证书。然后必须将此证书导入Web服务器以使用SSL启用HTTPS。 Web客户端(如浏览器或WebStart)在访问服务器时将验证证书链。
如果您使用自签名的jar,则所有用户都会收到关于潜在不安全代码的警告消息。为避免此问题,您应该从CA获取代码签名证书,这与Web服务器证书有些相似。提供的CA证书可以导入密钥库,并像使用自签名证书一样使用。代码签名证书将由CA签名,以便WebStart可以验证证书链。

2

据我理解,您不需要更改客户端代码。如果您只想通过HTTPS提供对JNLP的访问权限,则只需要重新配置分发JNLP的应用程序服务器,或者如果您在应用程序服务器前面有一个Web服务器(就像我们这里一样:用户-https->apache -> AJP -> tomcat),则需要重新配置Web服务器以允许通过HTTPS访问JNLP。


0

您希望利用https的哪些功能呢?

  • 签名/服务器认证是通过代码签名完成的,但您正在使用自签名证书来破坏此功能。
  • 您的应用程序代码是否包含必须隐藏在窃听者视线之外的机密信息?

正如您所说的“需要启用”,肯定有一个潜在的原因。

我认为,在您“需要https”之前,您需要一个适当的代码签名证书。您可能需要重新表达您的问题,以便解决您的潜在问题,而不是针对具体问题提出问题。


一个受信任的服务器证书可以防止中间人攻击,确保您从正确的服务器启动网络应用程序。但这可能已经是事实,因为他签署了JAR文件,对吧? - Tim Büthe
启用https可以保护代码传输免受窃听者的攻击,并确保它来自预期的服务器。签署JAR文件可确保传输的代码是签名者希望传输到客户端的代码。仅使用https意味着错误的代码来自正确的服务器,仅签署JAR文件意味着传输可以被“中间人”监听,但不能被更改。当应用程序一旦运行后向其来源服务器传输数据时,可能会引发其他问题。 - Olaf Kock

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