Jupyterhub 子域和多个 ssl 证书

Jupyterhub subdomains and multiple ssl certs

我正在设置多用户 JupyterHub 服务器。我已经实现了 JupyterHub 文档中推荐的子域机制。用户在其 Web 浏览器中输入服务器的登录名 URL,例如 https://notebook.example.com, and when they login JupyterHub creates a subdomain for them, e.g., https://username.notebook.example.com

我的通配符 DNS 工作正常。问题是此设置似乎需要多个 SSL 证书。我的证书颁发机构非常友好地为我提供了 notebook.example.com 和通配符证书 *.notebook.example.com 的证书。如果我有 notebook.example.com 证书的配置:

c.JupyterHub.ssl_cert = '/etc/pki/tls/certs/notebook.example.com.cer'

然后用户的浏览器将接受用于登录 URL 的证书,但当用户被转发到用户的子域 URL 时,将给出无法识别的证书消息。如果我使用其他证书,例如

c.JupyterHub.ssl_cert = '/etc/pki/tls/certs/wildcard.notebook.example.com.cer'

然后用户的浏览器会抱怨 "notebook.example.com" 与证书中的 *.notebook.example.com 不匹配,但是当用户被转发到他们的子域时会接受证书。

显然我可以告诉用户在某种情况下同意证书例外,但这可能会造成长期支持问题(我必须指导他们如何接受所​​有不同浏览器无法识别的证书; 他们可能会养成盲目接受证书的习惯)。

有没有一种方法可以将 JupyterHub 配置为使用一个证书进行初始登录,而对子域使用另一个证书?

我想我自己找到了解决办法。我向我的授权机构发送了一份 CSR 请求,要求获得多域证书,其中包括 notebook.example.com 和 *.notebook.example.com。我按照此处的说明创建了 CSR:http://apetec.com/support/generatesan-csr.htm

令我惊讶的是,他们接受了使用通配符主机名的多域证书请求。我仍在测试,但看起来它可以与 Jupyterhub 的登录 URL 和子域 URL 一起使用,没有问题。