Konfiguracja SSL na nowym serwerze - emkarcinos/WMIAdventure GitHub Wiki

Jeżeli chcemy postawić WMI Adventure na nowej maszynie wirualnej z nowym adresem i chcemy korzystać z HTTPS, musimy poprosić o certyfikat. Korzystamy obecnie z certbot, który zarzdza certyfikatami z https://letsencrypt.org.

Wstępna konfiguracja

Potrzebujemy:

  • Skonfigurowana VM
  • SSH do maszyny
  • Publiczny URL hosta
  • Cierpliwości

Żeby pobrać certyfikat pierwszy raz, certbot wysyła do naszego serwisu challage, który musimy odebrać i zapisać w lokalnie w pliku. Jako, że frontend działa na nginx w środowiskach innych niż lokalne, potrzebujemy udostępnić ścieżkę do challange do świata zewnętrznego.

Proces

  • Checkoutujemy kod na nowej maszynie
  • Edytujemy plik frontend/nginx/nginx.conf lokalnie według wzoru z tego commita.
  • W pliku docker-compose-dev.yml w obrazie certbota zmieniamy komendę certonly --webroot -w /var/www/certbot --force-renewal -d ADRES_HOSTA --email TWOJ_EMAIL --agree-tos, gdzie oczywiście podmieniamy ADRES_HOSTA i TWOJ_EMAIL pod swoje potrzeby.
  • Budujemy frontend: docker-compose -f docker-compose-dev.yml build wmiadventure-frontend i czekamy.
  • docker-compose -f docker-compose-dev.yml up wmiadventure-frontend certbot. Jeżeli wszystko poszło jak trzeba, dostaniemy komunikat Successfully received certificate.
  • Jeżeli zmieniamy domyślny serwer developerski / produkcyjny, musimy też zaktualizować ścieżki do certyfikatów w Dockerfile.(dev|prod) dla backendu. Podmieniamy adres hosta ze ścieżek na nowy. Warto też zacommitować zmiany zrobione w docker-compose.
  • Cofamy zmiany z nginx.conf. Musimy teraz podmienić ścieżki dla certyfikatów w ssl_certificate, ssl_certificate_key i server_name na adresy nowego hosta
  • Przebudowujemy obraz frontendu (docker-compose -f docker-compose-dev.yml build wmiadventure-frontend)
  • Jeżeli wszystko poszło w porządku, to przy uruchomieniu frontendu docker-compose -f docker-compose-dev.yml up wmiadventure-frontend nie powinniśmy dostać żadnych błędów i odwiedzenie hosta w przeglądarce powinno przekierować nas na HTTPS.
  • Warto ustawić cronjoba, żeby certyfikaty odświeżały się co jakiś czas. Certyfikaty z letsencrypt są ważne przez 3 miesiące, ale można je w dowolnym momencie odświeżyć. Przykłądowy cron dla proda: 0 5 1 */2 * /usr/bin/docker-compose -f /home/runner/WMIAdventure/WMIAdventure/docker-compose-prod.yml up certbot