Asennusoppaat

SSL-sertifikaatin asennus: Let's Encrypt

Näytämme vaihe vaiheelta, miten Certbotilla haetaan ilmainen SSL-sertifikaatti Let's Encryptiltä, asennetaan se Nginxiin tai Apacheen ja otetaan käyttöön automaattinen uusinta ja HTTPS-ohjaus.

Aurora YazılımToimitustiimi 6 min lukuaika
SSL-sertifikaatin asennus: Let's Encrypt
Miten SSL-sertifikaatti asennetaan Let's Encryptillä?

SSL-sertifikaatin asennusta varten verkkotunnuksesi on osoitettava palvelimeen ja portin 80 on oltava auki. Asennat Certbotin palvelimelle ja ajat komennon sudo certbot --nginx tai --apache; Certbot hakee sertifikaatin, määrittää verkkopalvelimen ja ottaa käyttöön automaattisen uusinnan. Viimeinen vaihe on testata uusinta komennolla certbot renew --dry-run.

Mitä Let's Encrypt ja Certbot ovat?

Let's Encrypt on voittoa tavoittelemattoman ISRG:n ylläpitämä varmenteiden myöntäjä, joka tarjoaa verkkotunnuksen vahvistavat (DV) sertifikaatit ilmaiseksi. Jos haluat tietää, mihin sertifikaattia tarvitaan ja mitä tyyppejä on, katso ensin artikkelimme Mikä on SSL-sertifikaatti.

Certbot puolestaan on EFF:n kehittämä virallinen asiakasohjelma, joka keskustelee Let's Encryptin kanssa ACME-protokollan kautta. Se pyytää sertifikaatin, varmistaa verkkotunnuksen omistuksen, määrittää Nginxin tai Apachen ja ajastaa uusinnan.

Let's Encryptin sertifikaatit ovat lyhytikäisiä; oletusvoimassaolo on 90 päivää, ja organisaatio on ilmoittanut lyhentävänsä sitä vähitellen. Siksi luota aina automaattiseen uusintaan käsin uusimisen sijaan.

Tarkistuslista ennen asennusta

Certbot epäonnistuu useimmin verkkotunnuksen vahvistuksessa. Kun alla olevat kohdat ovat kunnossa, asennus kestää yleensä muutaman minuutin.

  • Verkkotunnuksen A- ja AAAA-tietueet osoittavat oikeaan palvelimen IP-osoitteeseen (jos AAAA-tietue on olemassa, sivuston on vastattava myös IPv6:ssa)
  • Palvelimen portit 80 ja 443 ovat auki palomuurissa
  • Nginx tai Apache on käynnissä, ja verkkotunnukselle on määritelty palvelinlohko tai virtuaalipalvelin
  • Pääset yhdistämään palvelimelle SSH:lla käyttäjänä, jolla on sudo-oikeudet
  • Jos käytät välityspalvelua, kuten Cloudflarea, tiedät proxy-asetuksen ensimmäisessä asennuksessa
bashDNS- ja porttitarkistus
dig +short ornek.com A
dig +short www.ornek.com A
sudo ufw status
# Jos käytät Nginxiä
sudo ufw allow 'Nginx Full'

Certbotin asennus vaihe vaiheelta

Certbotin virallinen sivusto certbot.eff.org suosittelee Ubuntulle ja Debianille snap-pakettia, jolloin Certbot pysyy ajan tasalla jakelusta riippumatta. Jos et halua käyttää snapia, myös jakelun omat apt-paketit toimivat.

Snapilla (suositeltu)

Jos järjestelmään on aiemmin asennettu certbot-paketti aptilla, poista se ensin ristiriitojen välttämiseksi.

bash
sudo apt remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot --version

apt-paketilla

Tässä tavassa joudut asentamaan myös verkkopalvelimeen sopivan lisäosapaketin.

bash
sudo apt update
# Nginxille
sudo apt install certbot python3-certbot-nginx
# Apachelle
sudo apt install certbot python3-certbot-apache

Sertifikaatin haku ja asennus palvelimelle

Certbot lukee lisäosansa avulla nykyisen kokoonpanosi ja kysyy server_name- tai ServerName-arvojen perusteella, mille verkkotunnuksille sertifikaatti haetaan. On järkevintä lisätä sekä pelkkä verkkotunnus että www-versio samaan sertifikaattiin.

Komennon aikana sinulta pyydetään sähköpostiosoite ja käyttöehtojen hyväksyntä. Certbot julkaisee vahvistusta varten väliaikaisen tiedoston polkuun .well-known/acme-challenge, ja Let's Encrypt lukee tiedoston portin 80 kautta vahvistaakseen, että verkkotunnus kuuluu sinulle.

  • Sertifikaattitiedostot säilytetään hakemistossa /etc/letsencrypt/live/ornek.com/.
  • fullchain.pem sisältää palvelinsertifikaatin ja välivarmenteen yhdessä; käytä tätä verkkopalvelimessa.
  • privkey.pem on yksityinen avain; älä kopioi sitä minnekään äläkä jaa sitä.
bashNginx
sudo certbot --nginx -d ornek.com -d www.ornek.com
bashApache
sudo certbot --apache -d ornek.com -d www.ornek.com
bashVain sertifikaatti (webroot-menetelmä)
sudo certbot certonly --webroot -w /var/www/ornek.com/html \
  -d ornek.com -d www.ornek.com

Miten automaattinen uusinta otetaan käyttöön?

Snap- ja apt-paketit lisäävät asennuksen yhteydessä systemd-ajastimen tai cron-tehtävän. Tämä tehtävä ajetaan useita kertoja päivässä ja uusii vanhenemassa olevat sertifikaatit. Ainoa tehtäväsi on testata, että uusinta todella toimii.

Koska Let's Encrypt on lopettanut vanhenemisvaroitusten lähettämisen sähköpostilla, on hyvä tapa seurata sertifikaatin päättymispäivää omalla valvontatyökalulla. Voit myös määritellä uusinnan jälkeen ajettavan koukun (deploy hook), jotta verkkopalvelin lukee uuden sertifikaatin.

bash
sudo certbot renew --dry-run
sudo certbot certificates
systemctl list-timers | grep -i certbot

# Koukku, joka lataa Nginxin uudelleen jokaisen onnistuneen uusimisen jälkeen
echo '#!/bin/sh
systemctl reload nginx' | sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

HTTPS-ohjaus ja sekasisältö

Certbotin Nginx- ja Apache-lisäosat lisäävät yleensä puolestasi säännön, joka ohjaa HTTP-pyynnöt HTTPS:ään. Jos haluat tehdä sen käsin, käytä pysyvää 301-uudelleenohjausta; näin hakukoneet siirtävät vanhojen osoitteiden arvon uuteen osoitteeseen.

Apachea käyttävissä jaetuissa hosting-palveluissa sama hoituu .htaccess-tiedostolla; yksityiskohtaiset säännöt löydät oppaastamme htaccess-uudelleenohjaus. Jos sivulla ohjauksen jälkeen kutsutaan yhä kuvaa, skriptiä tai fonttia osoitteella http://, selain antaa sekasisältövaroituksen; vaihda nämä osoitteet https:ään tai suhteellisiin poluihin.

nginxNginxin käsin tehty uudelleenohjaus
server {
    listen 80;
    listen [::]:80;
    server_name ornek.com www.ornek.com;
    return 301 https://ornek.com$request_uri;
}

HSTS ja turvalliset TLS-asetukset

Kun uudelleenohjaus toimii, voit HSTS-otsakkeella käskeä selainta avaamaan sivustosi jatkossa vain HTTPS:llä. Tämä otsake estää yhteyden alentamisen HTTP:ksi väliin tulemalla ensimmäisen vierailun jälkeen.

Älä ota HSTS:ää käyttöön pitkäaikaisena hätiköiden. Jos jokin aliverkkotunnuksistasi ei vielä tue HTTPS:ää, pääsy siihen osoitteeseen katkeaa. Kokeile ensin lyhyellä max-age-arvolla ja pidennä aikaa, kun kaikki toimii moitteetta; lisää includeSubDomains- ja preload-asetukset vasta, kun olet varma, että kaikki aliverkkotunnukset ovat valmiita.

Certbotin Nginx- ja Apache-lisäosat lisäävät kokoonpanotiedoston, jossa on ajantasaiset ja turvalliset TLS-protokollan asetukset. Pidä vanhat TLS 1.0- ja 1.1-versiot pois käytöstä; palvelimen kokoonpanon säännöllinen tarkistus julkisilla testityökaluilla, kuten SSL Labs, auttaa huomaamaan huomaamatta jääneen heikon asetuksen ajoissa.

nginxLyhytaikainen HSTS-kokeilu
# 443-palvelinlohkon sisään
add_header Strict-Transport-Security "max-age=300" always;

Varmennus ja yleiset virheet

Älä tyydy selaimen lukkokuvakkeeseen vaan varmista asennus myös komentoriviltä. Alla olevat komennot näyttävät, kuka sertifikaatin on myöntänyt, sen päättymispäivän ja uudelleenohjausketjun.

VirheRatkaisu
Timeout during connectPortti 80 on kiinni tai DNS osoittaa väärään palvelimeen; tarkista palomuuri ja A-tietue.
Unauthorized / 404 challengeVahvistustiedostoa ei voi lukea; tarkista webroot-polku ja uudelleenohjaussäännöt.
Too many certificatesYrityksiä on tehty liian monta lyhyessä ajassa; tee kokeilut --dry-run- tai --staging-valinnalla.
Could not find a server blockVerkkotunnus puuttuu server_name-riviltä; lisää se palvelinlohkoon ja testaa komennolla nginx -t.
Selaimessa vanha sertifikaattiVerkkopalvelinta ei ladattu uudelleen; käytä reload-komentoa tai deploy hookia.
bash
curl -I http://ornek.com
curl -I https://www.ornek.com
openssl s_client -connect ornek.com:443 -servername ornek.com </dev/null 2>/dev/null \
  | openssl x509 -noout -issuer -dates

Wildcard-sertifikaatti, Windows ja hallintapaneelit

Muodossa *.ornek.com oleva wildcard-sertifikaatti saadaan vain DNS-vahvistuksella. Jos Certbotilla on DNS-palveluntarjoajallesi oma lisäosa, uusinta tapahtuu automaattisesti; --manual-menetelmällä haetut sertifikaatit taas vaativat TXT-tietueen lisäämistä käsin joka kerta.

Jos käytät Windows Serveriä ja IIS:ää, pääset samaan tulokseen ACME-protokollaa tukevilla Windows-asiakasohjelmilla. Hosting-paneelit tarjoavat usein Let's Encrypt -tuen yhden napsautuksen valintana; tällöin sinun ei tarvitse kirjoittaa palvelimelle komentoja.

HTTPS on vain osa nopeus- ja tietoturvatyötä. Kun sitä käsitellään yhdessä HTTP/2:n, välimuistiotsakkeiden ja pakkauksen kanssa, saat sekä luottamusta että suorituskykyä; hakukoneystävällisten verkkosivujen projekteissamme suunnittelemme nämä kerrokset alusta asti.

bash
sudo certbot certonly --manual --preferred-challenges dns \
  -d ornek.com -d "*.ornek.com"

Usein kysytyt kysymykset

01Onko ilmaisen ja maksullisen SSL:n välillä turvallisuuseroa?

Salauksen vahvuudessa ei ole eroa; molemmat käyttävät samoja standardeja. Maksulliset sertifikaatit tarjoavat lisäpalveluja, kuten organisaation vahvistuksen (OV, EV), takuuvakuutuksen tai tuen. Jos yrityssopimus ei vaadi muuta, Let's Encrypt riittää useimmille sivustoille.

02Mitä tapahtuu, jos sertifikaattia ei uusita?

Kun sertifikaatti on vanhentunut, selaimet näyttävät kävijälle koko sivun kokoisen turvallisuusvaroituksen, ja useimmat poistuvat sivustolta. Myös maksusivut ja API-yhteydet lakkaavat toimimasta. Siksi uusinta kannattaa testata asennuspäivänä ja päättymispäivää on seurattava.

03Toimiiko Certbot, kun käytän Cloudflarea?

Toimii, mutta kun proxy on päällä, HTTP-vahvistus voi joskus jäädä jumiin. Voit käyttää Cloudflaren omaa alkuperäpalvelimen sertifikaattia tai ajaa Certbotin DNS-vahvistuksella; SSL-tilan valitseminen Full (strict) on turvallisin tapa.

Certbotilla asennettu, uusinnaltaan testattu ja HTTPS:ään ohjattu sivusto antaa luottamusta sekä kävijälle että hakukoneelle. Jos haluat hoitaa sertifikaatin, uudelleenohjauksen ja palvelinasetukset nopeasti yhdessä, tutustu nopeus- ja suorituskykyoptimointiin tai koko prosessin kattaviin verkkosivuratkaisuihimme. Jos perustat verkkokauppaa, voit tutustua myös verkkokauppa-alustan vaihtoehtoihin, joissa sertifikaatti- ja palvelinpuoli hoidetaan puolestasi, ja kysymysten kanssa voit kirjoittaa meille yhteydenottosivun kautta.