Python 如何运行django sslserver(https),以便网络中的远程系统也可以访问?

Python 如何运行django sslserver(https),以便网络中的远程系统也可以访问?,python,django,ubuntu,ssl,https,Python,Django,Ubuntu,Ssl,Https,我试图用https运行我的服务器,所以我安装了django sslserver,并按如下方式运行 python manage.py runsslserver --certificate /etc/ssl/certs/server.crt --key /etc/ssl/private/server.key 0.0.0.0:8000 它正在使用上述命令成功运行。我可以通过localhost:8000或127.0.0.1:8000访问,但无法通过192.168.2.13:8000访问。这里192.1

我试图用https运行我的服务器,所以我安装了
django sslserver
,并按如下方式运行

python manage.py runsslserver --certificate /etc/ssl/certs/server.crt --key /etc/ssl/private/server.key 0.0.0.0:8000
它正在使用上述命令成功运行。我可以通过
localhost:8000
127.0.0.1:8000
访问,但无法通过
192.168.2.13:8000
访问。这里
192.168.2.13
是我的IP地址

为什么我无法通过我的IP地址访问?

python manage.py runsslserver --certificate /etc/ssl/certs/server.c --key /etc/ssl/private/server.key --addrport 192.168.2.13:9000
即使使用
8000
端口以外的端口启动服务器,默认情况下也会使用
8000
。在下面的示例中,我使用了
8014
,但默认值为
8000

root@nagapavan-HP-ProBook-440-G2:/home/nagapavan/Downloads/celestial_NAS# python manage.py runsslserver --certificate /etc/ssl/certs/server.c --key /etc/ssl/private/server.key 127.0.0.1:8014
Validating models...
System check identified some issues:

WARNINGS:
NAS.UserProfile.user: (fields.W342) Setting unique=True on a ForeignKey has the same effect as using a OneToOneField.
    HINT: ForeignKey(unique=True) is usually better served by a OneToOneField.
System check identified 1 issue (0 silenced).
October 06, 2015 - 13:21:40
Django version 1.8.4, using settings 'celestial_NAS.settings'
Starting development server at 127.0.0.1:8000/
Using SSL certificate: /etc/ssl/certs/server.crt
Using SSL key: /etc/ssl/private/server.key
Quit the server with CONTROL-C
为什么默认端口号为8000?

python manage.py runsslserver --certificate /etc/ssl/certs/server.c --key /etc/ssl/private/server.key --addrport 192.168.2.13:9000
我又找到一个命令来启动服务器,如下所示。我可以给出IP地址和端口号。它正在按预期工作。但我可以使用IP地址访问,但无法通过
localhost:9000
127.0.0.1:9000
访问,即使我正在访问本地系统本身的服务器

上述说法的原因可能是什么?

python manage.py runsslserver --certificate /etc/ssl/certs/server.c --key /etc/ssl/private/server.key --addrport 192.168.2.13:9000
甚至我也可以使用
https://192.168.2.13:9000
,我无法从同一网络中的远程系统访问服务器(甚至无法相互ping)

为什么我无法从同一网络中的远程系统访问服务器,我们需要更改配置文件吗?

python manage.py runsslserver --certificate /etc/ssl/certs/server.c --key /etc/ssl/private/server.key --addrport 192.168.2.13:9000
注意:以上所有URI都是通过https访问的

添加启动sslserver时出现的错误,如下所示:

这是上述问题的原因吗

----------------------------------------
----------------------------------------
Exception happened during processing of request from ('192.168.1.166', 56694)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/local/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 102, in __init__
    super(WSGIRequestHandler, self).__init__(*args, **kwargs)
  File "/usr/lib/python2.7/SocketServer.py", line 649, in __init__
    self.handle()
  File "/usr/local/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 167, in handle
    self.raw_requestline = self.rfile.readline(65537)
  File "/usr/lib/python2.7/socket.py", line 476, in readline
    data = self._sock.recv(self._rbufsize)
  File "/usr/lib/python2.7/ssl.py", line 341, in recv
    return self.read(buflen)
  File "/usr/lib/python2.7/ssl.py", line 260, in read
    return self._sslobj.read(len)
SSLError: [Errno 1] _ssl.c:1429: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca
----------------------------------------
----------------------------------------

它可以正常工作,请使用而不是0.0.0.0尝试您的网络ip,并允许在主机上添加网络ip

您是否检查了运行django应用程序的服务器上的防火墙设置?端口9000(或应用程序使用的端口)是否打开?服务器和您要访问应用程序的计算机之间是否有任何中间网络硬件?如果是,请检查这些设备是否允许通过端口9000的连接。您好,在这里,使用http启动服务器可以使用任何端口甚至9000,但我只在服务器使用https(runsslserver)运行时面临的问题…您是否亲自尝试过这个问题?您的建议应该没有帮助,因为指定OP正在执行的
0.0.0.0
,意味着“监听所有接口”,包括主机的NIC卡以及环回接口。指定主机IP只会导致代码不侦听环回,从而导致
localhost
127.0.0.1
停止工作。