Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
域名未知的SSL证书_Ssl_Certificate - Fatal编程技术网

域名未知的SSL证书

域名未知的SSL证书,ssl,certificate,Ssl,Certificate,我们在使用SSL保护intranet/internet网站时遇到问题,其中 我们不能预先知道合格的域名 基本上,我正在尝试制作一个安装在Web服务器上的程序 在我的直接控制之外,可以通过内部或互联网访问。无论如何 我希望它是通过SSL(https)安全的。为此,我想包括和 在目标计算机上安装SSL证书。我的安装程序已完全预打包 并且不应要求我的客户在安装期间或安装后进行任何特定的干预 结束。问题是,我无法提前知道目标机器的名称或域 名称,据我所知,SSL连接将返回警告(或 更糟?)因为我包含的证

我们在使用SSL保护intranet/internet网站时遇到问题,其中 我们不能预先知道合格的域名

基本上,我正在尝试制作一个安装在Web服务器上的程序 在我的直接控制之外,可以通过内部或互联网访问。无论如何 我希望它是通过SSL(https)安全的。为此,我想包括和 在目标计算机上安装SSL证书。我的安装程序已完全预打包 并且不应要求我的客户在安装期间或安装后进行任何特定的干预 结束。问题是,我无法提前知道目标机器的名称或域 名称,据我所知,SSL连接将返回警告(或 更糟?)因为我包含的证书将(必须)具有不同的 名字在上面

我真的很想避免这些警告,但我仍然想保持安全。有 在没有域的情况下安装没有证书警告的SSL连接的任何方法 名字提前知道了吗


感谢您的帮助。

每个站点都应该有自己的SSL证书。为什么不在安装过程中提示用户提供证书文件?

您最好购买一个通配符SSL证书-但是等等,这不是您所想的。您仍然需要提前知道第二级域(TLD是“.com”)。你可以有效地申请一个涵盖*.foo.com的证书,然后任何网站,a.foo.com,b.foo.com都将被覆盖。当然,这些证书比FQDN证书更昂贵,因为你正在用一些额外的硬币来对付窃听者

-在大多数(如果不是全部)情况下,SSL证书与Web服务器(apache、IIS等)关联,并且不是应用程序的一部分。由web服务器的管理员安装证书,而不是由您作为程序的作者


如果您的安装程序确实能够修改web服务器配置,并且您愿意让它使用自签名证书,则可以编写证书创建脚本以允许输入域名。然而,我感觉这对你来说并不是真的可用。此外,自签名证书通常会导致证书警告。

您想做的事情是不可能的。原因如下

证书将包括一组名称(公共名称,可能与使用者备选名称一起,可能包括通配符名称)

客户端的web浏览器将执行以下操作:

  • 用户希望访问“”
  • 请求是通过SSL进行的,请求中的域名是“myapp.mydomain.com”
  • 从Web服务器获取证书
  • 确保证书中至少有一个名称与请求中的域名完全相同或通配符匹配
  • 显示页面
  • 因此,您需要一个具有确切域名(或与确切域名匹配的通配符)的证书来使用应用程序。并且该证书需要在网站的确切域名被知晓的同时或之后提供,并且不能在任何更早的时间提供

    您似乎误解了证书可以“创建”或“安装”SSL连接。这是错误的。Web服务器—Apache、IIS、Nginx、LigHTTPD或您碰巧使用的任何服务器—是一个知道如何处理SSL连接各个方面的程序。证书只是Web服务器发送给客户端的一个文件,甚至不需要打开或以任何方式使用


    此外,要分发的webapp的作者不负责创建或分发证书,也不应误解为他有责任。只有网站维护人员应负责为其网站获取证书。正如另一个人所说,在您的安装过程中,或者在安装后的过程中,您可以向安装webapp的人索取证书。但这是你所能做的最好的了。

    如果我没有弄错的话,你的问题现在可能有解决办法了。但是,如果您无法控制指定从安装程序的web服务器(如其他人所述)提供哪些SSL证书,则此解决方案将不会对您有所帮助。如果程序本身包含web服务器,则不会出现此问题

    如果从受信任的https网站开始,则可以对运行应用程序的web服务器进行跨域TLS(SSL)XmlHttpRequests。这是通过使用OpenSourceForge项目实现的。该项目使用一个用JavaScript编写的TLS实现和一个小型Flash swf来处理跨域请求。您的程序将需要提供一个XML Flash策略文件,该文件授予受信任网站对运行应用程序的web服务器的访问权限

    您的程序还需要生成自签名SSL证书并将其上载到受信任的网站。从那里,每个程序的证书都可以通过JavaScript TLS实现作为受信任的证书包括在内。或者,您可以让您的程序上载其证书,由您创建的CA签名,使用适合您使用的通用或主题替代名称(不必是域名)。然后,您可以使用JavaScript信任CA证书,并在每个证书上查找正确的名称

    有关更多详细信息,请查看github上的Forge项目:


    最后的博客文章链接提供了有关其工作原理的更深入的信息。

    避免警告的方法是从证书颁发机构购买证书。他们不会在不知道域名的情况下向您颁发证书(至少是第二级,例如example.com)。如果不是网站,而是RPC的内部IP端点,该怎么办?