具有未知域名的SSL证书
我们遇到了使用SSL保护Intranet/Internet网站的问题,其中 我们无法提前知道合格的域名。具有未知域名的SSL证书
基本上,我试图制作一个程序,将安装在我的直接控制之外的网络服务器 上,可通过intra-or internet进行访问。在任何一种情况下,我都希望通过SSL(https)保证安全。为此,我想在目标机器上安装一个SSL证书并且 。我的安装程序已完全预打包 ,并且不应要求在我的 一端进行任何特定的安装期间或安装后安装。问题是,我无法提前知道目标机器的名称或域名 的名称,所以据我所知可以告诉SSL连接会返回警告(或更糟?),因为我包含的证书会(必须)有一个不同的 名称。
我真的想避免这些警告,但我仍然想保持安全。有没有 任何方式来安装一个没有证书警告的SSL连接,而没有提前知道域名 ?
感谢您的任何帮助,您可以给予。
你想要做什么是不可能的。这是为什么。
证书将包含一组名称(通用名称,可能还包括主题备选名称,可能包括通配符名称)。
客户端的Web浏览器将执行以下操作:
- 用户想访问 “https://myapp.mydomain.com/blog/posts/1”。
- 该请求是通过SSL并且请求中的域名是“myapp.mydomain.com”。
- 从Web服务器获取证书。
- 确保证书中至少有一个名称与请求中的域名完全相同或通配符匹配。
- 显示页面。
因此,您需要一个具有使用该应用程序的确切域名(或通配符与确切域名匹配)的证书。并且证书需要在网站的确切域名变得知道的时间的同一时间或更晚的时间可用,并且不能提前获得。
你似乎是,不知怎的,一个证书可以“创造”或“安装” SSL连接的误解下。这是错误的。 Web服务器 - Apache,IIS,Nginx,LigHTTPD或者您碰巧使用的任何一个 - 都是知道如何处理SSL连接的各个方面的程序。该证书是只是一个文件 Web服务器发送给客户端,甚至没有以任何方式打开或使用。
此外,作者分发的网络应用程序不负责创建或分发证书,也不应该被误解为他负责。只有网站维护人员应该负责为他的网站获取证书。正如另一个人所说的那样,在您的安装过程中或者在安装后的过程中,您可能会要求安装webapp的人员获得证书。但这是你能做的最好的。
如果它不是一个网站,但是RPC的内部IP端点? – odiszapc 2016-12-04 12:42:42
这些站点中的每一个都应该有自己的SSL证书。为什么不提示用户在安装过程中提供证书文件?
您可以做的最好的事情是购买通配符SSL证书 - 但是等等,这不是您的想法。您仍然需要提前知道第二级域名(TLD为“.com”)。您可以有效地要求提供包含* .foo.com的证书 - 然后将覆盖任何网站,a.foo.com和b.foo.com。当然,这些证书比FQDN证书更加昂贵,因为您正在使用一些额外的硬币来操作凿子。
-Oisin
oops,当然,谢谢。 – x0n 2009-12-18 22:39:46
在大多数(如果不是全部)的情况下,SSL证书与Web服务器(Apache时,IIS等)相关联,而不是应用程序的一部分。这取决于Web服务器的管理员安装证书,而不是您作为程序的作者。
如果您的安装程序确实有能力修改Web服务器配置,并且您愿意让它使用自签名证书,则可以编写证书的创建脚本以允许输入域名。但是,我觉得这并不是真的可以提供给你。此外,自签名证书通常会导致证书警告。
如果我理解正确,你有可能是你的问题的解决方案了。但是,如果您无法控制指定安装程序的Web服务器(如其他人所述)提供的SSL证书,则此解决方案对您无能为力。如果你的程序本身包含一个Web服务器,你将不会遇到这个问题。
如果你以一个值得信赖的HTTPS网站,你可以做跨域TLS(SSL)的XMLHttpRequest来运行你的应用程序的Web服务器。这可以使用开源Forge项目。该项目使用JavaScript编写的TLS实现和小型Flash swf来处理跨域请求。您的程序需要提供XML Flash策略文件,以授予受信任网站访问运行该应用程序的Web服务器的权限。
你的程序还需要生成自签名的SSL证书,并把它上传到受信赖的网站。从那里,每个程序的证书可以通过JavaScript TLS实现被包含为可信。或者,您可以使用适合您使用的通用或主题替代名称(不一定是域名),让程序上传其证书以由您创建的CA进行签名。然后,您可以使用JavaScript来信任CA证书,并在每个证书上查找正确的名称。
有关详细信息,在github上检查出的Forge项目:
http://github.com/digitalbazaar/forge/blob/master/README
在年底博客文章的链接提供有关它是如何工作更深入的信息。
避免警告的方式是从证书颁发机构购买证书。如果不知道域名(至少是第二层,例如example.com),他们就不会发给你一个证书 – bmb 2009-12-18 21:55:34