启用 HTTPS#

每个 JupyterHub 部署都应该启用 HTTPS!

HTTPS 对流量进行加密,以便安全地传输用户名、密码和数据。敏感信息将被安全地传输。最小 JupyterHub 支持通过Let’s Encrypt自动配置 HTTPS,或使用您自己的 TLS 密钥和证书手动设置。除非您有充分的理由使用手动方法,否则您应该使用Let’s Encrypt方法。

注意

必须设置一个指向 TLJH 可访问的 IP 地址的域名,才能设置 HTTPS。

为此,您需要登录注册商的网站并转到 DNS 记录部分。界面将类似于以下内容

Adding an entry to the DNS records

使用 Let’s Encrypt 自动启用 HTTPS#

注意

如果您运行的机器无法从互联网访问 - 例如,如果它是一台与互联网隔绝的组织内部机器 - 您无法使用此方法。请手动设置 DNS 条目和 HTTPS。

要通过 letsencrypt 启用 HTTPS

sudo tljh-config set https.enabled true
sudo tljh-config set https.letsencrypt.email you@example.com
sudo tljh-config add-item https.letsencrypt.domains yourhub.yourdomain.edu

其中[email protected] 是您的电子邮件地址,yourhub.yourdomain.edu 是您的 Hub 将运行的域名。

加载完此配置后,您的配置应如下所示

sudo tljh-config show
https:
  enabled: true
  letsencrypt:
    email: [email protected]
    domains:
      - yourhub.yourdomain.edu

最后,您可以重新加载代理以加载新的配置

sudo tljh-config reload proxy

此时,代理应该与 Let’s Encrypt 协商,为您设置一个受信任的 HTTPS 证书。代理可能需要一段时间才能与 Let’s Encrypt 协商以获取您的证书,之后您就可以通过https://yourhub.yourdomain.edu安全地访问您的 Hub。

这些证书有效期为 3 个月。代理将在证书过期之前自动为您续订证书。

使用现有密钥和证书的手动 HTTPS#

您可能已经拥有 SSL 密钥和证书。如果是这样,您可以告诉您的部署使用这些文件

sudo tljh-config set https.enabled true
sudo tljh-config set https.tls.key /etc/mycerts/mydomain.key
sudo tljh-config set https.tls.cert /etc/mycerts/mydomain.cert
sudo tljh-config add-item https.tls.domains yourhub.yourdomain.edu

加载完此配置后,您的配置应如下所示

sudo tljh-config show
https:
  enabled: true
  tls:
    key: /etc/mycerts/mydomain.key
    cert: /etc/mycerts/mydomain.cert
    domains:
      - yourhub.yourdomain.edu

最后,您可以重新加载代理以加载新的配置

sudo tljh-config reload proxy

现在,您可以通过https://yourhub.yourdomain.edu安全地访问您的 Hub。

故障排除#

如果您在使用 HTTPS 时遇到问题,查看traefik 代理日志可能会有所帮助。