Jupyter在EC2上:SSL错误

5
我正在尝试从EC2上提供Jupyter笔记本,但我遇到了SSL错误。 我正在使用这个AMI:TensorFlow GPU - @nottombrown (ami-8ed4d0e4)。 我使用了自签名证书,这可能是问题的一部分。
我查看了几篇其他SO帖子,其中有类似的错误,如这个这个这个,但它们在相当不同的上下文中出现错误,我无法弄清楚如何让解决方案(例如设置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
5个回答

12

尝试添加 https:// 来强制网络浏览器使用 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)

因为谷歌浏览器尝试使用HTTP连接。在使用

https://<jupyter-server-ip> 

终于成功了 :)


7

这个错误意味着SSL证书无法找到。

如果您还没有创建SSL证书:

通过在命令行中输入以下内容(从您的主目录开始),创建一个SSL证书:

$ mkdir certs
$ cd certs
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem

(来源于这些说明)

现在您已经拥有了SSL证书:

您需要告诉Jupyter在哪里找到它。

如果您有一个 jupyter_notebook_config.py 文件,请查看它(或使用 jupyter notebook --generate-config 生成一个)。确保您有以下行:

c.NotebookApp.certfile = u'/home/ubuntu/certs/mycert.pem' # 您的证书文件位置

(请参阅Jupyter Notebook文档

并确保您的自签名SSL证书实际位于该位置。一个常见的错误是混淆 certs.certs。像这样的错误将导致Jupyter无法找到您的SSL证书,从而导致您收到的错误。


9
仍然出现[SSL:WRONG_VERSION_NUMBER]错误版本号(_ssl.c:645)。 - yuchien
@yuchien 你解决问题了吗? - nithish08
我遇到了相同的问题,ssl.SSLError: [SSL: EE_KEY_TOO_SMALL] ee key too small (_ssl.c:4022),我确信已经按照你提到的sudo操作进行了处理,并且我有这一行代码:c.NotebookApp.certfile = u'/home/ubuntu/certs/mycert.pem' #location of your certificate file。 - yts61

1
我发现权限问题是由于mycert.pem文件仅具有root权限引起的。
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 20 12:22 .
drwxr-xr-x 9 ubuntu ubuntu 4096 Mar 20 12:09 ..
-rw------- 1 root   root   2949 Mar 20 12:22 mycert.pem

我无法以root身份运行jupyter notebook,因此我更改了权限所有权

sudo chown ubuntu:ubuntu mycert.pem

这解决了问题。

0
我在使用自签名证书的Ubuntu 14.4上将jupyter notebook作为公共服务器运行时遇到了同样的错误。在我的情况下,问题是由于jupyter_notebook_config.py文件中的错误导致的。我错误地设置了c.NotebookApp.client_ca = u'/../mycert.pem'。注释掉这一行解决了问题。

-1

这个错误是由两个原因引起的:

  1. 证书问题
$ mkdir certs
$ cd certs
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mycert.pem -out mycert.pem
  1. http(s)调用错误。

    • https://ec2-ip:8888 | 使用 https

    • 获取 ec2-ip 的方法:curl http://checkip.amazonaws.com


rsa:2048和rsa:1024之间有什么区别? - yts61

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接