启用 HTTPS#
每个 JupyterHub 部署都应该启用 HTTPS!
HTTPS 对流量进行加密,以便安全地传输用户名、密码和数据。敏感信息将被安全地传输。最小 JupyterHub 支持通过Let’s Encrypt自动配置 HTTPS,或使用您自己的 TLS 密钥和证书手动设置。除非您有充分的理由使用手动方法,否则您应该使用Let’s Encrypt方法。
注意
您必须设置一个指向 TLJH 可访问的 IP 地址的域名,才能设置 HTTPS。
为此,您需要登录注册商的网站并转到 DNS 记录部分。界面将类似于以下内容
使用 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 代理日志可能会有所帮助。