Let's Encrypt

zielona kłódka

Po dłuższej przerwie udało mi się postawić tę stronę na nogi. Mój najtańszy serwer na świecie (Raspberry Pi B) ma teraz najtańszy na świecie (bo darmowy) certyfikat od letsencrypt.org.

Było z tym trochę zachodu, bo oryginalny skrypt certbot-auto od certbot.eff.org nie działa na pierwszym Raspberry Pi. Wywala się z błędem Illegal instruction. Podejrzewam, że powodem są składniki skompilowane pod nowszego ARMa.

Rozwiązaniem jest acme-nginx, który zadziałał od pierwszego kopa.

Konfiguracja Ghost

Gdzieś w segmencie production należy zaznaczyć, że strona działa na https, reszta standardowa:

 production: {
    url: 'https://olewaczers.eu.org',
    database: {
        client: 'sqlite3',
        connection: {
            filename: path.join(__dirname, '/content/data/ghost-dev.db')
            },
    debug: false
    },
server: {
    host: '127.0.0.1',
    port: '2368'
    },
}

Konfiguracja nginx

Ten etap składa się z kilku kroków:

Definuję proxy

upstream ghost_upstream {
   server 127.0.0.1:2368;
   keepalive 64;
}

Wskazuję, gdzie działa serwis Ghost. Jak widać w konfigu dwa piętra wyżej, u mnie standardowo: na lokalnym hoście.

Przekierowanie z http na https

server {
    listen 80;
    server_name olewaczers.eu.org;
    return 301 https://$server_name$request_uri;
}

Od teraz każde wywołanie po http będzie przez serwer przekierowywane na bezpieczne https.

Ustawienia serwera https:

server {
    listen 8443 ssl;
    server_name olewaczers.eu.org;

    ssl_certificate        /etc/ssl/private/letsencrypt-domain.pem;
    ssl_certificate_key    /etc/ssl/private/letsencrypt-domain.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

location / {
    proxy_connect_timeout 75s;
    proxy_read_timeout 300s;

    proxy_set_header Host              $http_host;
    proxy_set_header X-Real-IP         $remote_addr;
    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_pass http://ghost_upstream;
}

Jak widać powyżej, SSL u mnie działa na innym porcie, niż 443. Dlaczego, o tym w innym odcinku.

Istotne są parametry proxy_*_timeout w powyższej konfiguracji. Raspberry Pi jest bardzo wolny i nim Ghost odpalił bardzo obciążające system biblioteki autentykacji, nginx rozłączał się niedoczekawszy sukcesu. W efekcie, nie dało się zalogować do edycji strony.

Certyfikaty

Instrukcja jest opisana łopatologicznie na acme-nginx, tylko klonować.

Dodatkowe zabiegi

Gdy wszystko działała, a oko cieszyć będzie zielona kłódka, w poszukiwaniu dodatkowych ulepszeń, warto rzucić okiem jak zaimplementować cache.

Autor

aceJacek

You probably haven't heard of me.

comments powered by Disqus