我使用的是Windows 7和python 2.7 我创建了本地https服务器,将重定向网址作为 IP地址重定向到服务器。我使用openssl为https创建了cert文件。 一切都很好但在重定向到本地https服务器时获得SSL异常。 因为,每次我的应用程序启动时,本地都会创建此服务器,因此我们无法购买ssl证书,因为重定向URL是系统的IP地址。 我使用this来创建本地服务器。 那么,如何避免这种SSL异常。
答案 0 :(得分:0)
您可以使用解决方法:
答案 1 :(得分:0)
正在操作服务器的人需要一个有效的证书,与用于访问该站点的主机名相匹配。
如果仅从本地计算机访问该应用程序,则只需使用127.0.0.1而不是外部IP来调用它,而不使用HTTPS。由于数据永远不会离开机器,因此使用HTTPS毫无意义。 (在这种情况下,您可能还希望将Web服务器绑定到127.0.0.1以防止其他人访问该站点。)
如果从网络上的其他计算机访问该应用程序,并且您希望使用SSL,则运行该应用程序的任何人都需要与URL中的主机名匹配的证书。您无法获得私有IP的证书(例如192.168.1.1或10.2.3.4),但如果它是公共IP,您可能可以获得该证书。
但更合理的是,在IP处指向某个主机名(如果您的CA允许,则为DynDNS,或属于运行该应用程序的任何域的域的子域)。例如,一家名为Example拥有example.com的公司可以使用webapp.example.com,将其指向他们的服务器,并获得证书。无论谁运行服务器都需要部署该证书,您的应用程序需要设计为接受它。 每个客户站点需要一个证书。如果您希望它可以在开箱即用的浏览器上运行,那么就没有(安全)方法。
您可以通过提供自动化工作流来请求证书,甚至为您的客户创建自己的类似dyndns的服务来简化流程,在这里他们可以注册itsname.yourservice.com,让它指向他们的IP渴望,并从你的主人那里获得证书。 (这需要他们相信你很多,并且有点像反模式,但可能是最不讨厌的解决方案。)你仍然需要确保每个客户都有自己的证书。最重要的是,请勿尝试获取此类域的通配符证书,并将证书和私钥与应用程序一起分发。拥有应用程序副本的任何人都可以攻击" secure"连接。更重要的是,一旦CA发现,您的证书将被撤销,这将阻止以非常严厉的警告访问该站点,并且无法绕过该警告。并且可能会让您因违反与他们达成的协议而导致CA无法保护私钥。
另一种选择是在第一次启动时生成自签名证书,然后输出指纹。 不要对所有安装使用相同的硬编码证书,尽可能方便,因为分发给所有客户的私钥不是私有的。此证书将生成您看到的警告。您现在必须将此证书或此站点的例外添加到用于访问该应用程序的浏览器。只要您验证指纹,这是安全的 - 这只是更多的工作。根据用户使用的浏览器,可能有多种方法可以轻松地将此类证书推广到多台计算机上。