我正在使用 Windows 7 和 python 2.7 我创建了本地 https 服务器,并将重定向 url 到服务器作为其IP 地址。我使用 openssl 为 https 创建了证书文件。Everyting 很好,但在重定向到本地 https 服务器时会出现 SSL 异常。由于该服务器是在本地创建的,因此每次启动我的应用程序时,我们都无法购买 ssl 证书,因为重定向 url 是系统的 IP 地址。我用它来创建本地服务器。那么,如何避免这个 SSL 异常。

我正在使用 Windows 7 和 python 2.7 我创建了本地 https 服务器,并将重定向 url 到服务器作为其IP 地址。我使用 openssl 为 https 创建了证书文件。Everyting 很好,但在重定向到本地 https 服务器时会出现 SSL 异常。由于该服务器是在本地创建的,因此每次启动我的应用程序时,我们都无法购买 ssl 证书,因为重定向 url 是系统的 IP 地址。我用它来创建本地服务器。那么,如何避免这个 SSL 异常。

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