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.

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
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.
sudo apt remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot --versionapt-paketilla
Tässä tavassa joudut asentamaan myös verkkopalvelimeen sopivan lisäosapaketin.
sudo apt update
# Nginxille
sudo apt install certbot python3-certbot-nginx
# Apachelle
sudo apt install certbot python3-certbot-apacheSertifikaatin 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ä.
sudo certbot --nginx -d ornek.com -d www.ornek.comsudo certbot --apache -d ornek.com -d www.ornek.comsudo certbot certonly --webroot -w /var/www/ornek.com/html \
-d ornek.com -d www.ornek.comMiten 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.
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.shHTTPS-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.
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.
# 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.
| Virhe | Ratkaisu |
|---|---|
| Timeout during connect | Portti 80 on kiinni tai DNS osoittaa väärään palvelimeen; tarkista palomuuri ja A-tietue. |
| Unauthorized / 404 challenge | Vahvistustiedostoa ei voi lukea; tarkista webroot-polku ja uudelleenohjaussäännöt. |
| Too many certificates | Yrityksiä on tehty liian monta lyhyessä ajassa; tee kokeilut --dry-run- tai --staging-valinnalla. |
| Could not find a server block | Verkkotunnus puuttuu server_name-riviltä; lisää se palvelinlohkoon ja testaa komennolla nginx -t. |
| Selaimessa vanha sertifikaatti | Verkkopalvelinta ei ladattu uudelleen; käytä reload-komentoa tai deploy hookia. |
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 -datesWildcard-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.
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.


