Go back

Enabling HTTPS for Jupyter

Below are the steps to enable https for your JupyterHub :

  1. Go to anaconda home directory
cd /home/anaconda/
  1. Note: Below step is for generating self signed certificate. If you have SSL certificate signed from Certificate Authority, you can skip this step and use your CA signed key and certificate

Generate auto sign certificate by running below command and answering the prompted questions. This will create two files key.pem and certificate.pem .

sudo openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem

/img/common/jupyterhub_https_guide_command.png

  1. Take backup of JupyterHub configuration file :
cp jupyterhub_config.py backup_jupyterhub_config.py
  1. Enable SSL for JupyterHub

Open /home/anaconda/ in your preferred editor as sudo user.

sudo vim jupyterhub_config.py

Search for “c.JupyterHub.ssl_cert”, uncomment the setting and set it to your ssl certificate as shown below:

c.JupyterHub.ssl_cert = '/home/anaconda/certificate.pem'

Similarly, search for “c.JupyterHub.ssl_key”, uncomment the setting and set it to your ssl key as shown below:

c.JupyterHub.ssl_key = '/home/anaconda/key.pem'

Save the file.

  1. Finally, you need to setup the ssl port in the startup script. For this, open the startup script as sudo user using below command
sudo vim /etc/init.d/jupyterhub

change the value for port from 80 to 443 in the last line. Now the last line should look like below. The change is highlighted in red:

source $ANACONDA_HOME/bin/activate pyml ; $ANACONDA_HOME/bin/jupyterhub -f /home/anaconda/jupyterhub_config.py --upgrade-db-- port 443
  1. Restart your VM using below command
sudo init 6
  1. You also need to enable port 443 in your cloud environment. If you are not aware of how to enable port 443, follow below links for your respective cloud provide:

/img/common/jupyterhub_https_guide_gcp_port_change.png

/img/common/jupyterhub_https_guide_gcp_port_change_02.png

  1. Now once your VM is restarted, you can access it using https://yourvmip
  2. If you used self signed certificate for https, your browser will show security exception which you need to accept as shown below for Firefox and Chrome:

/img/common/jupyterhub_https_guide_browser_warning.png

/img/common/jupyterhub_https_guide_browser_warning_advance.png

/img/common/jupyterhub_https_guide_browser_connection_error.png

/img/common/jupyterhub_https_guide_browser_proceed_page.png

  1. Finally, if you accept the security risk as shown above, you will get the login page:

/img/common/jupyterhub_https_guide_login_page.png

Go back