Jupyter Notebook双向https认证配置
文章目录
介绍
Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。——Jupyter Notebook官方介绍
简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。
本文主要讲配置双向https认证的问题,其余步骤简单写下。
环境
python3.6
部署
pip3 install jupyter
证书生成
- 方法1
可用openssl生成,需要生成ca、server、client证书。不写了,网上教程很多
- 方法2
生成自签名证书传统工具是OpenSSL
。不过OpenSSL
不论是其复杂的命令选项,还是更加复杂配置都会让人头皮发麻。这里介绍一个更简单的生成自签名证书的工具: certstrap
, 项目地址:square/certstrap.具体安装请参考其文档。几行命令就可生成ca、server、client、以及生成PKCS格式的证书。
1.1 CA证书
要进行证书自签名,首先是生成一个自信任的CA认证证书。
$: certstrap init --common-name "ExampleCA" --expires "20 years"
命令完成后,会在当前目录下创建一个新的out
目录,生成的证书都在该目录下.
$: tree out
out
├── ExampleCA.crl
├── ExampleCA.crt
└── ExampleCA.key
1.2 服务端证书
首先创建CSR, 即证书签名请求。
$: certstrap request-cert -cn server -ip 127.0.0.1 -domain "*.example.com"
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Created out/server.key
Created out/server.csr
生成CSR之后,通过刚刚生成的CA证书进行签名.
$: certstrap sign server --CA ExampleCA
Enter passphrase for CA key (empty for no passphrase):
Created out/server.crt from out/server.csr signed by out/ExampleCA.key
这样就完成了服务端证书的签名,签名后的证书就是:out/server.crt
.
1.3 客户端证书
企业内部集群,通常为了保证服务之间的安全行,对客户端请求需要进行双向验证。这个时候就需要客户端也提供证书。
客户端证书的生成过程同服务端类似,更简单一点,不需要提供证书的IP与域名信息。
$: certstrap request-cert -cn client
$: certstrap sign client --CA ExampleCA
1.4 查看证书
生成完的证书是否正确,可以通过certigo
工具进行查询。项目地址: square/certigo。
安装完成后,通过以下命令查询证书的具体信息。
$: certigo dump out/server.crt
** CERTIFICATE 1 **
Valid: 2019-08-26 09:34 UTC to 2021-08-26 09:34 UTC
Subject:
CN=server
Issuer:
CN=ExampleCA
DNS Names:
*.example.com
IP Addresses:
127.0.0.1
1.5 PKCS 格式证书
生成PKCS格式的证书可以直接点击安装到系统证书簇中,方便一些应用(浏览器等)的使用。具体生成PKCS 格式证书,使用OpenSSL
命令如下:
$: openssl pkcs12 -export -out out/client.p12 -inkey out/client.key -in out/client.crt -certfile out/ExampleCA.crt
Jupyter Notebook双向https配置
- 服务端
启动的时候添加证书参数,如下:
jupyter notebook --ip=0.0.0.0 --certfile=server.crt --keyfile=server.key --client-ca=ExampleCA.crt
备注:
server.crt、server.key、ExampleCA.crt需要按照实际路径配置
- 客户端
windows下,下载client.p12证书到本机,打开chrome-设置-安全-管理证书,然后进去个人,安装下载的client.p12证书,安装完成后用chrome打开jupyter notebook
的url即可。