Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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
python中本地https服务器上的SSL异常_Python_Ssl_Https_Activestate_Python Server Pages - Fatal编程技术网

python中本地https服务器上的SSL异常

python中本地https服务器上的SSL异常,python,ssl,https,activestate,python-server-pages,Python,Ssl,Https,Activestate,Python Server Pages,我正在使用Windows7和python 2.7 我创建了本地https服务器,将url重定向到服务器作为其IP地址。我使用openssl为https创建了证书文件。 一切正常,但在重定向到本地https服务器时出现SSL异常。 因为,这个服务器是在本地创建的,所以每次启动我的应用程序时,我们都不能购买ssl证书,因为重定向url是系统的IP地址。 我用于创建本地服务器。 那么,如何避免这种SSL异常呢 您可以将以下内容用作解决方法: 使用dyndns或子域之类的东西?并购买SSL证书 在浏览器

我正在使用Windows7和python 2.7 我创建了本地https服务器,将url重定向到服务器作为其IP地址。我使用openssl为https创建了证书文件。 一切正常,但在重定向到本地https服务器时出现SSL异常。 因为,这个服务器是在本地创建的,所以每次启动我的应用程序时,我们都不能购买ssl证书,因为重定向url是系统的IP地址。 我用于创建本地服务器。 那么,如何避免这种SSL异常呢


您可以将以下内容用作解决方法:

使用dyndns或子域之类的东西?并购买SSL证书 在浏览器中安装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,您可能可以获取该IP的证书

不过,如果您的CA允许,则指向一些主机名DynDNS,或者指向属于在IP上运行应用程序的人的域的子域,这要合理得多。例如,一家名为example.com的公司可以使用webapp.example.com,将其指向其服务器,并为此获得证书。无论谁运行服务器,都需要部署该证书,并且您的应用程序需要设计为接受该证书。每个客户站点都需要一个证书。如果你想让它在开箱即用的浏览器上工作,就没有安全的解决方法

您可以通过提供自动工作流来请求证书,甚至为您的客户创建自己的类似dyndns的服务来简化流程,客户可以在这里注册他们的rname.yourservice.com,将其指向他们想要的IP,并从您处获得他们主机的证书。这需要他们非常信任你,这有点反模式,但可能是最不令人讨厌的解决方案。您仍然需要确保每个客户都有自己的证书。最重要的是,不要尝试为此类域获取通配符证书,并将证书和私钥与应用程序一起分发。任何拥有你的应用副本的人都可以攻击安全连接。更重要的是,一旦CA发现,您的证书将被吊销,这将使用非常严厉的警告阻止访问该网站,并且无法绕过警告。而且可能会因为违反了您与CA之间的保护私钥协议而给您带来麻烦


不过,另一种选择是在第一次启动时生成一个自签名证书,然后输出指纹。不要在所有安装中使用相同的硬编码证书,因为分发给所有客户的私钥不是私钥,因此尽可能方便。此证书将生成您看到的警告。您现在必须将此证书或此站点的例外添加到用于访问应用程序的浏览器中。只要你验证指纹,这是安全的-这只是更多的工作。根据用户使用的浏览器,可能有多种方法可以轻松地向多台计算机推出此类证书。

我想将此应用程序分发给其他人。所以,其他用户的IP地址将是他们https服务器的重定向地址。因此,如何购买一个固定的证书,因为IP是不同的用户不同。谢谢你的答复。我使用本地https服务器,它用于gmail用户的身份验证。当用户登录到gmail帐户时,gmail将成功代码和访问令牌发送到此本地https服务器。我想将此应用程序分发给其他人。所以,其他用户的IP地址将是他们https服务器的重定向地址。因此,如何购买固定证书,因为IP对于不同的用户是不同的。首先,尝试使用127.0.0.1作为重定向目标。它不会解决你的问题,但更干净,如果它工作可能更可靠。最简单的方法——特别是如果它应该跨浏览器工作的话——可能是手动确认警告并添加一个永久性异常——如果您设法将其移动到127.0.0.1,则风险很小。如果希望HTTPS没有警告,则需要有效的证书,并且每个用户都需要一个单独的证书。您可能能够在安装过程中动态生成一个并在浏览器中安装它,但这将是大量工作。