Výchozí certifikát FlexiBee
Ve výchozím stavu je k zabezpečení komunikace využíván self-signed certifikát. O něm ale již dnes většina prohlížečů prohlašuje, že není bezpečný. Musíte tedy potvrdit „bezpečnostní výjimku“, abyste mohli přistoupit k webovému rozhraní nebo REST API.
Instalace vlastního certifikátu
Jak tedy tento stav napravit a zabezpečit komunikaci s FlexiBee? Je potřeba na server nahrát vlastní certifikát. Postup jak certifikát vyměnit je popsaný v dokumentaci na stránkách FlexiBee. Pokud máte správný certifikát, obsahující všechno potřebné, stačí zavolat:
curl -X PUT -u jmeno:heslo -k -L -T domena.eu.pem https://localhost:5434/certificate
Většina certifikátů je ale placená. A nestojí zrovna malý peníz 🙂. Existuje ovšem certifikační autorita Let's Encrypt, která poskytuje SSL certifikáty zdarma.
Let's Encrypt certifikát
Certifikát není možné rovnou nahrát do FlexiBee. Není totiž ve správném tvaru a neobsahuje celý řetězec certifikátů. Je tedy nutné si nejdříve certifikát připravit.
Certifikáty se nacházejí v adresáři /etc/letsencrypt/live/nazevserveru/. Nazevserveru je proměnná, pod kterou Let's Encrypt ceritifikát vytvořil. Většinou se jedná o název serveru (např. charlieblog.eu).
Jediný certifikát, který se v adresáři nenachází, je DST Root CA X3. Tento certifikát si budeme muset stáhnout z internetu.
Pro práci nejspíš budeme potřebovat root oprávnění, protože do adresáře letsencrypt nemá přístup jen tak někdo.
Přejdeme tedy do tohoto adresáře a můžeme začít.
# staneme se rootem
sudo su
# přesuneme se do správného adresáře
cd /etc/letsencrypt/live/nazevserveru/
# převedeme klíč do formátu PKCS#1
openssl rsa -in privkey.pem -out rsaprivkey.pem
# z internetu stáhneme certifikát DST Root CA X3
curl https://ssl-tools.net/certificates/dac9024f54d8f6df94935fb1732638ca6ad77c13.pem > root-ca.pem
# zkombinujeme všechny certifikáty a vytvoříme finální flexibee-le.pem
cat fullchain.pem root-ca.pem rsaprivkey.pem > flexibee-le.pem
Hotovo.
Teď už můžeme certifikát nahrát pomocí příkazu
curl -X PUT -u jmeno:heslo -k -L -T flexibee-le.pem https://localhost:5434/certificate
Jméno a heslo je nutné nahradit reálným uživatelským jménem a heslem 🙂.
Závěr
Konečně máme ve FlexiBee certifikát, který funguje, je zdarma a zabezpečí nám komunikaci.
Služby jako Integromat už nebudou mít s certifikátem problém. Při připojování k FlexiBee API z PHP již nebudeme muset nastavovat CURLOPT_SSL_VERIFYPEER a CURLOPT_SSL_VERIFYHOST na False.
Pokud chcete proces nasazení Let's Encrypt certifikátu zautomatizovat, koukněte se na ukázkový script, který jsem připravil. Naleznete ho v GitLab repozitáři. 😉
Díky Igimu Hákovi 🙂.