Skip to content

Instantly share code, notes, and snippets.

@joneskoo
Last active April 2, 2016 17:06
Show Gist options
  • Save joneskoo/017896676b3ecb4ad44db7d31c7cc7d6 to your computer and use it in GitHub Desktop.
Save joneskoo/017896676b3ecb4ad44db7d31c7cc7d6 to your computer and use it in GitHub Desktop.
acmetool reload script for kapsi.fi sites SNI

kapsi.fi kotisivujen TLS acmetool avulla

acmetool on Let's Encryptin ACME-protokollan toteuttava asiakasohjelma.

  1. Pyydä Kapsin ylläpidolta SSL-tuen lisäys omalle domainille.

SSL-tuki pitää pyytää omalle verkkosivulle Kapsin ylläpidolta sähköpostilla ennen kuin toimii. Näitä ohjeita voi sinänsä seurata myös ennen pyytämistä, mutta SSL/TLS aktivoituu vasta kun ylläpito lisää sen.

  1. Lataa linux_amd64.tar.gz-päätteinen acmetool-binääri

    https://github.com/hlandau/acme/releases

  2. Luo tunnus Let's Encryptiin.

    Tällä käskyllä acmetool pitää tilansa tallessa kotihakemistossa olevassa .acmetool hakemistossa eikä oletuksessa.

$ acmetool --state=$HOME/.acmetool/state --hooks=$HOME/.acmetool/hooks quickstart

Valitse domain validaatioksi webroot. Poluksi /home/users/OMATUNNUS/well-known/acme-challenge korvaten OMATUNNUS käyttäjätunnuksella.

Hyväksy cron-tehtävän lisäys quickstartin lopuksi. Aina kun käytät acmetoolia myöhemmin, joudut toistamaan missä tilahakemisto on, esim.

$ acmetool --state=$HOME/.acmetool/state --hooks=$HOME/.acmetool/hooks status
  1. Korvaa reload-skripti tämän gistin reload-skriptillä.
$ wget -O $HOME/.acmetool/hooks/reload https://gist.githubusercontent.com/joneskoo/017896676b3ecb4ad44db7d31c7cc7d6/raw/61f7a9c5b42c2305ecd31c3c078a86fc64650262/reload
  1. Salli domain-validaatio
$ mkdir -p $HOME/well-known/acme-challenge
$ touch $HOME/well-known/acme-challenge/.htaccess
$ chmod -R a+rX $HOME/well-known

$ mkdir $HOME/sites/example.com/www/.well-known/
$ chmod a+rx $HOME/sites/example.com/www/.well-known/
$ ln -s $HOME/well-known/acme-challenge $HOME/sites/example.com/www/.well-known/acme-challenge
  1. Pyydä sertifikaatti haluamillesi nimille

Luodaan hakemisto .ssl mihin sertifikaatit tulevat ja mistä automaatio kopioi ne automaattisesti palvelimelle.

$ mkdir $HOME/sites/example.com/.ssl
$ acmetool --state=$HOME/.acmetool/state --hooks=$HOME/.acmetool/hooks want example.com www.example.com
Jos ei onnistu niin lisää lokitustasoa niin näet mikä menee mahdollisesti pieleen.
$ acmetool --state=$HOME/.acmetool/state --hooks=$HOME/.acmetool/hooks \
  want example.com www.example.com --xlog.severity=DEBUG
  1. Tarkista että sertifikaatit ovat paikallaan
$ ssl-check
/home/users/me/sites */.ssl
* me/.ssl
me/.ssl/ca.crt: OK
me/.ssl/server.crt: OK

Jos lisäsit cronin, niin sertifikaattien pitäisi uusiutua automaattisesti tarvittaessa.

#!/bin/sh
# Copy certificates for ssl-enabled sites to kapsi sites .ssl directory
# ssl enabled = sites/*/.ssl exists.
set -e
EVENT_NAME="$1"
[ "$EVENT_NAME" = "live-updated" ] || exit 42
sites="$HOME/sites"
cd "$sites"
for sslsite in */.ssl; do
name=$(dirname "$sslsite")
certdir="$ACME_STATE_DIR/live/$name"
targetdir="$sites/$name/.ssl"
if [ -z "$name" -o ! -e "$certdir" -o ! -e "$targetdir" ]; then
continue
fi
cp "$certdir/cert" "$targetdir/server.crt"
cp "$certdir/privkey" "$targetdir/server.key"
cp "$certdir/chain" "$targetdir/ca.crt"
chmod -R go= "$targetdir"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment