From f83ceb00256e95910684e0671909a3884db75578 Mon Sep 17 00:00:00 2001 From: vsoch Date: Sat, 29 May 2021 11:10:41 -0600 Subject: [PATCH] adding example for mkcert Signed-off-by: vsoch --- docs/_docs/install/https.md | 178 +++++++++++++++++++++++++++++++- docs/assets/img/https-works.png | Bin 0 -> 51579 bytes 2 files changed, 175 insertions(+), 3 deletions(-) create mode 100644 docs/assets/img/https-works.png diff --git a/docs/_docs/install/https.md b/docs/_docs/install/https.md index ab6dc8cb..dc206599 100644 --- a/docs/_docs/install/https.md +++ b/docs/_docs/install/https.md @@ -6,7 +6,179 @@ toc: true # Configure HTTPs -## Get a hostname +There are two strategies we discuss here to get https. The first is for development, meaning +you can make a faux https certificate to test it locally, and the second is for +production. + +## Faux https + +We are going to be using [FiloSottile/mkcert](https://github.com/FiloSottile/mkcert) +for this case. You can following the instructions in the README to generate your +"certificates." You will need [Go installed](https://golang.org/doc/install) on your system first. +If you want to install from a package manager, there are instructions in the +[repository README](https://github.com/FiloSottile/mkcert). + +```bash +git clone https://github.com/FiloSottile/mkcert +cd mkcert +go build +``` + +I also needed to install: + +```bash +$ sudo apt install libnss3-tools +``` + +So the certificates could be installed to my browsers. +This places `mkcert` in your current working directory! + +```bash +$ ./mkcert -h +Usage of mkcert: + + $ mkcert -install + Install the local CA in the system trust store. + + $ mkcert example.org + Generate "example.org.pem" and "example.org-key.pem". + + $ mkcert example.com myapp.dev localhost 127.0.0.1 ::1 + Generate "example.com+4.pem" and "example.com+4-key.pem". + + $ mkcert "*.example.it" + Generate "_wildcard.example.it.pem" and "_wildcard.example.it-key.pem". + + $ mkcert -uninstall + Uninstall the local CA (but do not delete it). + +For more options, run "mkcert -help". +``` + +I then did: + +```bash +$ ./mkcert -install +The local CA is already installed in the system trust store! πŸ‘ +The local CA is now installed in the Firefox and/or Chrome/Chromium trust store (requires browser restart)! 🦊 +``` + +Let's pretend we are generating a certificate for singularity-registry.org. + +```bash +./mkcert singularity-registry.org "*.singularity-registry.org" singularity-registry.test localhost 127.0.0.1 ::1 + +Created a new certificate valid for the following names πŸ“œ + - "singularity-registry.org" + - "*.singularity-registry.org" + - "singularity-registry.test" + - "localhost" + - "127.0.0.1" + - "::1" + +Reminder: X.509 wildcards only go one level deep, so this won't match a.b.singularity-registry.org ℹ️ + +The certificate is at "./singularity-registry.org+5.pem" and the key at "./singularity-registry.org+5-key.pem" βœ… + +It will expire on 29 August 2023 πŸ—“ +``` + +Then I moved them into the registry root, and updated my shub/settings/config.py to use +https on localhost. + +```python +DOMAIN_NAME = "https://127.0.0.1" +DOMAIN_NAME_HTTP = "https://127.0.0.1" +DOMAIN_NAKED = DOMAIN_NAME_HTTP.replace("https://", "") +``` + +Finally, we need to make sure that we are using the docker-compose file for https, +the nginx.conf for https, and that the certificates are correctly bound. + +```bash +mv docker-compose.yml docker-compose.yml.http +mv https/docker-compose.yml . +mv nginx.conf nginx.conf http +mv https/nginx.conf.https nginx.conf +``` + +In the docker-compose.yml that is newly copied, change the binds of the +paths to use the files in your present working directory. + +```yaml +nginx: + restart: always + image: quay.io/vanessa/sregistry_nginx + ports: + - "80:80" + - "443:443" + volumes: + - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro + - ./uwsgi_params.par:/etc/nginx/uwsgi_params.par:ro + - ./singularity-registry.org+5-key.pem:/code/domain.key + - ./singularity-registry.org+5.pem:/code/cert.pem +# - /etc/ssl/certs:/etc/ssl/certs:ro +# - /etc/ssl/private:/etc/ssl/private:ro +``` + +We're almost done! In the newly moved nginx.conf, make sure to comment out the dhparam.pem, +the old certificate paths, and add the new ones we just created: + +``` + ssl on; +# ssl_certificate /etc/ssl/certs/chained.pem; +# ssl_certificate_key /etc/ssl/private/domain.key; + ssl_certificate /code/cert.pem; + ssl_certificate_key /code/domain.key; + ssl_session_timeout 5m; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA; + ssl_session_cache shared:SSL:50m; +# ssl_dhparam /etc/ssl/certs/dhparam.pem; + ssl_prefer_server_ciphers on; +``` + +You can then do `docker-compose up -d`. As instructed by the tool, we probably +need to restart our browsers. + +```bash +docker-compose up -d +``` + +And amazingly (I opened Chrome freshly) my site has https! + +![teams.png](../../assets/img/https-works.png) + + +Once you are done, you can (along with deleting the certs you created) you can +uninstall mkcert and delete the certs you created: + +```bash +$ ./mkcert -uninstall +... +The local CA is now uninstalled from the system trust store(s)! πŸ‘‹ +``` + +You can see where the root certs were located: + +```bash +$ ./mkcert -CAROOT +/home/vanessa/.local/share/mkcert +``` + +And remove them: + +```bash +rm -rf /home/vanessa/.local/share/mkcert/ +``` + +I also deleted the mkcert directory and the original certificates, +and undid the changes above to settings, the docker-compose and nginx.conf files + +## Production https + +### Get a hostname + Recall that the first step to get https is to have a hostname. You can use Google Domains, or you can also create an account on [https://www.dynu.com](https://www.dynu.com) (It’s free). Log into your account and under the Control Panel go to DDNS Services. On the next page, click the **+ Add** button, and fill out the Host and Top Level fields under Option 1 using whatever you like. @@ -15,8 +187,7 @@ This will be how users access your server (e.g., `sregistry.dynu.net)`. Click + - On the next page, change the IPv4 Address to the IP address for your droplet. Change the TTL to 60. Click Save. - With a few minutes, you should be able to access your server using that hostname. - -## Test Nginx +### Test Nginx In the install script, we installed nginx. Now, you merely need to start it (it might already be started). @@ -28,6 +199,7 @@ $ sudo service nginx start For this next step, we are still working on the host where you will run your container. What we first need to do is generate certificates, start a local web server, and ping "Let's Encrypt" to verify that we own the server, and then sign the certificates. ### SSL Certificates + We'll use "certbot" to install and renew certificates. #### Step 1. Set some variables diff --git a/docs/assets/img/https-works.png b/docs/assets/img/https-works.png new file mode 100644 index 0000000000000000000000000000000000000000..dd58a2184fa1d4ea941c5f0d37cf490457d65503 GIT binary patch literal 51579 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 literal 0 HcmV?d00001