Let’s Encryptの証明書を使ってJupyter NotebookをSSL化しよう!

その他
スポンサーリンク

今回は無料の証明書を得られるLet’s Encryptの証明書を使ってJupyter NotebookをSSL化しようという記事です。

 

当初は、「オレオレ証明書」を使ってSSL化していたのですが、「やはり、カッコ悪い」ということでLet’s Encryptを使うことにしました。

 

オレオレ証明書の記事はたくさんあったのですがLet’s Encryptの記事はあまりなかったので今回書いていきます。

「オレオレ証明書」を使うと、Chromeの場合に警告が出てしまいました。
他のブラウザでも警告が出たと思います。

前提条件と環境

今回の記事はSSL化をすることなので、最初の過程は飛ばさせていただきます。

前提条件

Jupyter Notebookを構築済み
IPとドメインを紐づけ済み
環境
Debian 4.9.189-3+deb9u2
IPとドメインを紐づけしておかないと「https:IPアドレス」と打った時にChromeに怒られる
Debianでなくても、参考資料(後述)を参照すれば問題ありません。

Let’s Encryptの証明書の生成

Let’s Encrypt総合ポータルを参考にして、自分のOSに対応するやりかたでLet’s Encryptをインストールしましょう。

sudo apt-get install letsencrypt
sudo certbot certonly

英語で書かれているので、それを読んで対話式に選択していきます。最後に「あなたの証明書はここですよ!」と書かれているのでそれをコピーします。

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/あなたのドメイン/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/あなたのドメイン/privkey.pem
しかし、私の場合はそこに書かれていたのはショートカットだったので、実際のファイルは違う場所にありました。
実際のファイルの場所を調べるには/etc/letsencrypt/live/あなたのドメイン/に移動して「ls」すると
lrwxrwxrwx 1 root root  40 Dec 24 11:34 cert.pem -> ../../archive/あなたのドメイン/cert1.pem

となっていたので、実際のファイルの場所違うことが分かりました。

鍵の場所を忘れないようにホームに移動してきます。(別にやらなくてもいい)

sudo cp /etc/letsencrypt/archive/あなたのドメイン/ ~ -r

Jupyter Notebookの設定ファイルを変更する

vim ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.certfile = u'ファイルの場所/cert1.pem'
c.NotebookApp.keyfile = u'ファイルの場所/privkey1.pem'

Jupyter Notebookの起動と動作確認

Jupyter Notebookの起動

jupyter-notebook  --ip=0.0.0.0

動作確認

しかっりと鍵マークがついていて、警告もされていません。
これでしっかりとSSL化できていることになります。

証明書の自動更新

OSによってコマンドが違います。

sudo crontab -e
#毎週月曜の5時 
0 5 * * 1 sudo letsencrypt renew

まとめ

今回はLet’s Encryptを使って、SSL化する方法を紹介しました。まったくこのような記事がなかったので書いてみました。参考になれば幸いです。

参考文献

Let’sEncryptでSSL証明書発行
Let’s Encrypt総合ポータル
certbot certonlyコマンドで証明書取得(standaloneプラグイン)
Internet Security Research Group (ISRG)Certification Practice Statement
Let’s Encryptの無料サーバ証明書を使ってhttps対応のJupyterサーバをGCPに立てた
Ubuntuのバージョン確認
オレオレ証明書を使いたがる人を例を用いて説得する
オレだよオレオレ認証局で証明書つくる

タイトルとURLをコピーしました