此问题来自这里。
我有一台运行 Ubuntu 12.04 的服务器。我已在其上安装了 IPython。现在,我想通过 HTTPS 访问 IPython。
我已完成以下步骤:
使用 openssl 创建 SSL 证书:
openssl req -x509 -nodes -newkey rsa:1024 -keyout ipython_cert.pem -out ipython_cert.pem
在 IPython 中创建密码哈希:
from IPython.lib import passwd
passwd()
创建笔记本配置文件:
ipython profile create nbserver
编辑 nbserver 配置文件:
nano /.ipython/profile_nbserver/ipython_notebook_config.py
c = get_config() c.IPKernalApp.pylab = 'inline' c.NotebookApp.certfile = u'/home/user/ipython_cert.pem' c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.password = u'XXX' c.NotebookApp.port = 4096 c.NotebookManager.notebook_dir = u'/home/user/pynb'
接下来,我像这样启动 IPython 笔记本:ipython notebook --profile nbserver
。现在,在笔记本电脑的浏览器中,我输入服务器的 IP 地址,然后输入端口号4096
。IPython 抛出此错误:
SSL Error on 6 ('ip address', 54169): [Errno 1] _ssl.c:504: error:1407609C:SSL routines:SSL23_GET_CLIENT_HELLO:http request
这是为什么?我该如何解决这个问题?
答案1
通过在浏览器的地址栏中输入 IP 或域名,浏览器默认采用 HTTP。这就是您在这里遇到的情况,浏览器期望 HTTP 流量,但服务器在此端口上提供 HTTPS。因此浏览器抱怨,服务器的答案与预期形式存在根本偏差。
因此,解决方案是在https://
浏览器地址栏中添加您的 IP/内部域名前缀。