raf*_*man 3 python ssl jupyter jupyter-notebook
我正在尝试从EC2提供Jupyter笔记本电脑,但出现SSL错误。我正在使用此AMI :TensorFlow GPU - @nottombrown (ami-8ed4d0e4)
。我使用了自签名证书,这可能是问题的一部分。
我看过其他一些具有类似错误的SO帖子,例如this,this和this,但是他们在完全不同的上下文中遇到了错误,因此我不知道如何获得解决方案(例如设置verify=False
)为我工作。
[E 15:52:44.954 NotebookApp] Exception in callback (<socket._socketobject object at 0x7f5f993dad00>, <function null_wrapper at 0x7f5f99319758>)
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/tornado/ioloop.py", line 883, in start
handler_func(fd_obj, events)
File "/usr/local/lib/python2.7/dist-packages/tornado/stack_context.py", line 275, in null_wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/tornado/netutil.py", line 274, in accept_handler
callback(connection, address)
File "/usr/local/lib/python2.7/dist-packages/tornado/tcpserver.py", line 239, in _handle_connection
do_handshake_on_connect=False)
File "/usr/local/lib/python2.7/dist-packages/tornado/netutil.py", line 521, in ssl_wrap_socket
return ssl.wrap_socket(socket, **dict(context, **kwargs))
File "/usr/lib/python2.7/ssl.py", line 487, in wrap_socket
ciphers=ciphers)
File "/usr/lib/python2.7/ssl.py", line 241, in __init__
ciphers)
SSLError: [Errno 336265225] _ssl.c:355: error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib
Run Code Online (Sandbox Code Playgroud)
小智 7
尝试添加https://以强制Web浏览器使用HTTPS连接。
我有:
[W 08:25:56.148 NotebookApp] SSL Error on 9 ('<jupyter-server-ip>', 62862): [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:590)
Run Code Online (Sandbox Code Playgroud)
因为Chrome尝试使用HTTP连接。使用时
https://<jupyter-server-ip>
Run Code Online (Sandbox Code Playgroud)
它终于可以工作了:)
此错误意味着找不到SSL证书。
如果您尚未创建SSL证书:
通过在命令行中键入以下内容来创建一个(从您的主目录开始):
$ mkdir certs
$ cd certs
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
Run Code Online (Sandbox Code Playgroud)
(根据这些说明)
现在您有了SSL证书:
您需要告诉Jupyter在哪里找到它。
查看jupyter_notebook_config.py
是否有一个(或使用生成一个jupyter notebook --generate-config
)。
确保您具有以下行:
c.NotebookApp.certfile = u'/home/ubuntu/certs/mycert.pem' #location of your certificate file
(请参阅Jupyter Notebook文档)
并确保您的自签名SSL证书实际上位于该位置。一个常见的错误是例如certs
与混淆.certs
。这样的错误将导致Jupyter无法找到您的SSL证书,并且将导致您得到的错误。