我正在设置一个多用户JupyterHub服务器。我已经实现了JupyterHub文档中推荐的子域机制。用户在其Web浏览器中键入服务器的登录URL,例如https://notebook.example.com,并且当他们登录时,JupyterHub为他们创建子域,例如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使用一个证书进行初始登录,另一个证书用于子域名?
答案 0 :(得分:0)
我想我已经找到了自己的解决方案。我向我的权限发送了一份CSR请求,要求提供多域证书,其中包括notebook.example.com和* .notebook.example.com。我按照此处的说明创建了CSR:http://apetec.com/support/generatesan-csr.htm
令我惊讶的是,他们接受了带有通配符主机名的多域证书的请求。我还在测试,但看起来它适用于登录URL和Jupyterhub的子域URL,没有问题。