Kapsin tukifoorumi
Tukifoorumi on tarkoitettu helpottamaanKapsin palveluita koskevien kysymysten ratkaisua.
tarjoaa sinulle mahdollisuudet ilmaista itseäsi Internetissä.
Koitanpas laittaa tähän noin copy&paste kelpoiset rivit miten sain itse toimimaan:
PÄIVITYS 15.11.2017: Acme-tinyyn on tullut päivitys joka lataa aina kulloisetkin lisenssiehdot automaatisesti kovakoodauksen sijaan, joten ne joilla on jo Acme-tiny niin päivittäkää se komennolla "git pull" kansiossa johon latasitte acme-tinyn.
Ensi kertaa tätä ohjetta seuraavat saavat automaattisesti uusimman version.
Ensin kertaluonteiset:
Pyydä ylläpidolta "Https käyttöön omalle domainille", jotta sivusi palvellaan oikealta palvelimelta. Ohjeet toimivat jokatapauksessa, mutta https toimii vasta pyynnön jälkeen. Eli voit valmistella https vaikka et vielä olisi pyytänytkään tuota. Sitten itse asiaan:
Ladataan Acme-tiny ja annetaan sille suoritusoikeudet:
git clone https://github.com/diafygi/acme-tiny.git
chmod u+x acme-tiny/acme_tiny.py
Luodaan käyttäjälle avain, tämä on privaatti, joten luodaan kotihakemistoon, ja pidetään visusti omana tietona, tätä voi käyttää tarvittaessa useamman, toisistaan riippumattoman, domainin kanssa:
openssl genrsa 4096 > ~/account.key
chmod 600 ~/account.key
Sitten luodaan haluttua sertifikaattia varten oma avain, tämä on domainkohtainen, ja kapsin webbipalvelin tarvitsee myös tämän tiedoston, tämä tallennetaan ~/sites/domain.tld/.ssl/server.key tiedostoon:
openssl genrsa 4096 > ~/sites/domain.tld/.ssl/server.key
Tämän jälkeen luodaan "Certificate signing request" domainnimeä varten. Yhtä domainnimeä/subdomainia varten vaaditaan hieman erilainen komento kuin SNI-sertifikaattia varten (eli sertifikaatti joka kattaa esim domain.tld että www.domain.tld), eli suorita seuraavista joko/tai:
Yhtä domain/subdomainnimeä varten:
openssl req -new -sha256 -key ~/sites/domain.tld/.ssl/server.key -subj "/CN=domain.tld" > ~/sites/domain.tld/.ssl/server.csr
monta domain/subdomainnimeä varten, tämä on hieman hankalan näköinen, mutta pääasia on huomioida nuo DNS:domain.tld kohdat, ylärajaa ei subdomainien määrissä periaatteessa ole, mutta kovin monen kymmenen kohdalla alkaa asiat tukehtumaan pullaansa:
openssl req -new -sha256 -key ~/sites/domain.tld/.ssl/server.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:domain.tld,DNS:www.domain.tld")) > ~/sites/domain.tld/.ssl/server.csr
Jos myöhemmin haluaa lisätä tai poistaa subdomaineja, niin ajaa vain komennon uudestaan sopivilla domainnimillä.
Seuraavaksi voidaankin jo testata että kaikki toimii, huomionarvoista on että acme-tiny/Let's encrypt vaatii intuituion vastaisesti "pääsyn" suojaamattoman http-yhteyden yli autentikaatio-noncen varmistamiseksi, eli jos sivusto pakko-ohjaa kaiken https:ään, niin tälle pitää tehdä poikkeus (Esimerkki ohjeiden lopussa). Luodaan Let's encryptin vaatima sijainti nonce:a varten:
mkdir -p ~/sites/domain.tld/www/.well-known/acme-challenge/
Komennetaan acme-tiny allekirjoittamaan sertifikaatti, sekä ladataan ajantasainen Let's encryptin intermediate-sertifikaatti
~/acme-tiny/acme_tiny.py --account-key ~/account.key --csr ~/sites/domain.tld/.ssl/server.csr --acme-dir ~/sites/domain.tld/www/.well-known/acme-challenge/ > ~/sites/domain.tld/.ssl/server.crt
wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem -O ~/sites/domain.tld/.ssl/ca.crt
Kun komennot suoriutuvat onnistuneesti, oikein konffattu sivusto toimii sivusto https:n yli, kun kapsin Apache-palvelin reloadataan, tämä suoritetaan vuorokausittain automaattisesti.
Tämän jälkeen jäljelle jääkin vain sertifikaatin uusiminen ajoittain, tätä varten loin itse cronia varten skriptin tiedostoon ~/cron/acme-tiny-domain.tld.sh:
#!/bin/bash
~/acme-tiny/acme_tiny.py --account-key ~/account.key --csr ~/sites/domain.tld/.ssl/server.csr --acme-dir ~/sites/domain.tld/www/.well-known/acme-challenge/ > ~/sites/domain.tld/.ssl/server.crt
wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem -O ~/sites/domain.tld/.ssl/ca.crt
Annetaan tälle skriptille suoritusoikeudet:
chmod u+x ~/cron/acme-tiny-domain.tld.sh
Ja viimeiseksi lisätään croniin rivi komennolla crontab -e joka samalla logittaa ulosantinsa tiedostoon, sekä suoritetaan 1 kuukauden välein:
0 0 1 * * ~/cron/acme-tiny-domain.tld.sh 2> ~/cron/domain.tld.log
Extra: .htaccess esimerkki, jossa ohjataan kaikki liikenne https, sekä alidomainin uudelleenohjaus + näille säännöille Lets encrypt poikkeus jotta Acme-tiny voi toimia oikein:
# Ohjaa kaikki liikenne HTTPS, paitsi Lets Encrypt
RewriteEngine On
RewriteCond %{ENV:HTTPS} !=on
RewriteCond %{REQUEST_URI} !^/?\.well-known/acme-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NC]
# Ohjaa "mail" alidomain uudelle palvelimelle, paitsi Lets Encrypt
RewriteCond %{HTTP_HOST} ^mail\.domain\.tld$ [NC]
RewriteCond %{REQUEST_URI} !^/?\.well-known/acme-challenge/
RewriteRule (.*)$ https://mail.google.com/a/domain.tld [L,R=302,NC]
Kiitos. Ihan suoraan copypastena ei mennyt, paria kohtaa piti täydentää. Acme_tiny.pyltä puuttui kloonattuna suoritusbitti, se piti suorittaa eksplisiittisesti python acme_tiny.py
. Muutamia hakemistoja piti luoda manuaalisesti: mkdir -p ~/sites/domain.tld/.ssl ~/sites/domain.tld/www/.well-known/acme-challenge/
Lisäksi domain.tld ja alidomain.domain.tld -paria varten piti alidomainin .htaccessiin lisätä ohjaussääntö RewriteRule ^(.well-known/acme-challenge/.*)$ http://domain.tld/$1 [L]
, ilman sitä acme "couldn't download http://alidomain.domain.tld/.well-known/acme-challenge/tiedosto".
Totta, tuota suoritusbittiä ei ole valmiiksi, joten se pitää joko lisätä tai sitten suorittaa ekspliittisesti, lisäänpä ohjeeseen, kiitos huomautuksesta.
Tuon kansion luomisenkin voisin lisätä kyllä, mutta alidomainien kanssa ei ole yhtä yleispätevää ohjetta koska alidomaineja voi pyytää "yksittäin" ylläpidolta, tai sitten voi pyytää ja toteuttaa alidomaineille ns. wildcard ohjauksen päädomainiin ja hoitaa alidomainit itse htaccess:illa monin eri tavoin, joten tarpeita ja tapoja tuon well-known:in tekoon on useita.
Kyhäsin tätä ohjetta mukaillen itselleni Ansible-skriptin, joka laittaa tiedostot ja cron-jobin paikoilleen. Kirjoitin siitä pienen kuvauksen: https://tsk.iki.fi/2016/07/kapsi-lets-encrypt-ansible/
Voiskos joku tutkia miten saadaan acme_tinylla otettua käyttöön tämä uusi wildcard certti?
https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579
https://github.com/diafygi/acme-tiny/issues/195#issuecomment-372097617
Kehittäjä sanoi ettei aio lisätä wildcard tukea vaikka acmev2 lisääkin.
Tuo Let's encryptin oma työkalu on kovin epäsopiva Kapsin ympäristöön koska se haluaisi sertifikaatin lisäksi myös mm. muuttaa www-palvelimen asetuksia, mikä ei näin Kapsin tapauksessa toki käy päinsä.
Ahkeralla säätämisellä tuon työkalun saa kuitenkin toimimaan mutta ei mitenkään helposti. Sen sijaan tarjolla on merkittävästi yksinkertaisempia työkaluja, jotka tekevät vain ja ainoastaan sertifikaatin hakemiseen tarvittavat operaatiot.
acme-tiny on yksi tämmöinen työkalu. Sillä sertifikaatin saa generoitua kohtuullisen kivuttomasti ja tämän jälkeen kopioi sen sivuston ~/sites/sivusto.domain/.ssl hakemistoon server.crt nimelle. Myös avain tulee olla salasanatta tiedostossa ~/sites/sivusto.domain/.ssl/server.key sekä mahdollinen ca-sertifikaatti tiedostossa ~/sites/sivusto.domain/.ssl/ca.crt. Korvaa kaikista edellä mainituista sivusto.domain omalla domainillasi.
Koska Let's encryptin sertifikaatit ovat voimassa vain 90 päivää kerrallaan, tulee sertifikaatti uusia kohtuullisen usein. Suosittelenkin että tätä varten tekee esimerkiksi kerran kahdessa kuukaudessa ajettavan crontab-scriptin joka generoi uuden sertifikaatin ja asettaa sen paikalleen.
Tämä toimi, kiitos ohjeista. Tuon lisäksi toki tarvitsee pyytää ylläpitoa fixaamaan dns:n
Totta, suoritusbitti puuttuu, ekspliittisen suorittamisen lisäksi voi siis antaa sen suoritusbitin, lisään ohjeisiin, hyvä huomautus.
Alidomaineita varten ei olekkaan yhtä oikeaa ohjetta, kun niitä voi kapsilla joko pyytää "yksittäisinä" ylläpidolta tai vaihtoehtoisesti pyytää ja toteuttaa wildcard-ohjaus päädomainiin jonka alla sitten määritellä itse alidomainit htaccess:illa, teidän ohje toimii ainakin ensimmäisen kanssa :)
Itse käytin oman domainin sertifikaatin hakemiseen Letsencryptiltä Getssl-skriptiä, jonka sai loppujenlopuksi myös aika pienellä vaivalla toimimaan.
Kohtuu hyvät ohjeet löytyy osoitteesta: https://github.com/srvrco/getssl
Tässä ehkä tärkein muutos on, että poistaa käytöstä Getssl:n ominaisuudet, joihin ei ole oikeusia, kuten palvelimen uudelleenkäynnistyksen. Lisäksi tulee huomioida sertifikaattitiedostojen sijainti:
# Location for all your certs, these can either be on the server (full path name)
# or using ssh /sftp as for the ACL
DOMAIN_CERT_LOCATION="/home/users/tunnus/sites/domain.tld/.ssl/server.crt"
DOMAIN_KEY_LOCATION="/home/users/tunnus/sites/domain.tld/.ssl/server.key"
#DOMAIN_CERT_LOCATION="ssh:server5:/etc/ssl/domain.crt"
#DOMAIN_KEY_LOCATION="ssh:server5:/etc/ssl/domain.key"
CA_CERT_LOCATION="/home/users/tunnus/sites/domain.tld/.ssl/ca.crt"
#CA_CERT_LOCATION="/etc/ssl/chain.crt"
#DOMAIN_CHAIN_LOCATION="" # this is the domain cert and CA cert
#DOMAIN_KEY_CERT_LOCATION="" # this is the domain_key and domain cert
#DOMAIN_PEM_LOCATION="" # this is the domain_key. domain cert and CA cert
Ansiblessa näyttää olevan nykyään moduuli sertifikaatin hakuun. En ole kokeillut (vielä), mutta pistän linkin tänne tiedoksi:
Minä en saanut toimimaan, miten lähden troubleshoottaamaan? Olen tehnyt vain nämä asiat, en mitään muuta, eli ehkä jokin itsestäänselvyys on jäänyt pois? (Kiitos Olmarille ohjeesta)
Acme-tiny toimii,
Avaimet sain tehtyä,
Annoin tämän komennon openssl req -new -sha256 -key ~/sites/OMA.DOMAIN/.ssl/server.key -subj "/CN=OMA.DOMAIN" > ~/sites/OMA.DOMAIN/.ssl/server.csr,
Loin acmehaasteelle kansion,
Latasin ca.crt sertifikaatin mainitulla komennolla ja näyttää olevan paikoillaan,
Muokkasin .htaccess -tiedostoa,
Olen odottanut muutaman vuorokauden että apache olisi varmasti restartattu,
mutta sivusto ei toimi kuin httpeen yli, eli https sivua ei löydy.
Mitä tehdä?
ootko pyytäny https:n aktivointia ylläpidolta. jos en aivan väärin muista niin ainakin itellä se vaadittiin...
Kiitos vinkistä, pyysin, ei ole vielä vastattu.
Tarvitseeko https jotain aktivointia?
DNS ilmeisesti vaatii rukkausta, ainakin olen joutunut sitä pyytämään.
Lisäsin ohjeeni alkuun että https aktivointi pitää pyytää ylläpidolta. Tähän juurisyynä on että jos https "tuki" olisi päällä domainille joka ei tarjoa https-sertifikaattia ja selain sitä pyytää, niin tarjotaan kapsi.fi sertifikaatti ja se ei toki voi toimia. Siksi se pitää erikseen pyytää, mutta kieltämättä nuo "oma domain" ohjeet ei sitä erityisesti selvästi kerro https://www.kapsi.fi/ohjeet/domain.html
Jos on intoa ja hyvä ajatus, miten tuota domain-ohjetta voisi parantaa, niin muutoksia ohjeeseen voi yrittää tyrkyttää sivun https://github.com/kapsiry/kapsi-verkkosivut kautta.
Kummallista kyllä mulla alkoi toimimaan https-sivut vaikka en ole vielä pyytänyt mitään tähän liittyvää ylläpidolta. Noiden ohjeiden mukaan vaan ajoin kaikki loitsut eilen ja nyt testasin sivustojani.
Kuinkakohan saisin toimimaan Siilossa? Mulla on Siilossa tallessa taloyhtiön hallitukselle jaettuja suuria dokumentteja Nextcloud-ohjelmassa joka on siis asennettu sinne siiloon. Olis turvallisemman tuntuista jos selaimessa olisi lukon kuva kun Nextcloudia selaillaan.
Hei, ihan samalla tavalla kuin tuossa Olmarin ohjeessa mutta vaihdat vain polkujen tilalle tyyliin ~/siilo/sites/domain.tld
Kirjautumisen jälkeen voit tilata tähän kysymykseen jätetyt uudet vastaukset ja kommentit omaan sähköpostiisi.
RSS-lukijan kautta:Markdown-perusteet
Kysymyksen avainsanat:
kysytty: 20.10.2015 klo 22:41
katsottu: 7,666 kertaa
päivitetty: 07.07.2018 klo 01:00
Ainakin beta-vaiheessa heillä on melkoisen tiukat rajoitukset päällä. Samasta ip-osoitteesta pystyy tekemään vain kaksi rekisteröintiä/viikko. Lisäksi on domain-kohtainen rajoitus, mutta tämä tuksin tulee ongelmaksi. Luultavasti nämä rajoitukset lieventyvät siirryttäessä julkiseen palveluun, mutta en tiedä lieventyvätkö tarpeeksi kapsin tapauksessa.
Nyt kun public beta alkoi, niin rate limittiä höllennettiin https://community.letsencrypt.org/t/public-beta-rate-limits/4772
Tosin rootinha tuo systeemi tarvis. Olis hieno jos sais Kapsilla toimimaan.
Voiskos joku tutkia miten saadaan acme_tinylla otettua käyttöön tämä uusi wildcard certti?
https://community.letsencrypt.org/t/acme-v2-and-wildcard-certificate-support-is-live/55579
https://github.com/diafygi/acme-tiny/issues/195#issuecomment-372097617
Kehittäjä sanoi ettei aio lisätä wildcard tukea vaikka acmev2 lisääkin.