it:iot:self-signed-certificate

Toto je starší verze dokumentu!


Self signed certificate

Mým cílem bylo vytvořit self-signed certifikát pro server. Zároveň jsem chtěl mít vytvořeno důvěryhodnou certifikační autoritu, kterou bych naimportoval do telefonu s Androidem. V rámci openssl jsem se docela potrápil s hledáním řešení. Nakonec jsem našel utilitu, která mi všechno potřebné vyřeší. Vygeneruje certifikační autoritu a vygeneruje certifikáty pro server (například pro NodeRed) a podepíše certifikát.

Utilita se jmenuje mkcert a zafungovala mi perfektně.

Jediná drobná komplikace je, že jsem si ji musel zkompilovat - je napsaná v jazyce GO. Doporučuji postupovat dle návodu na githubu, můj už nemusí být aktuální. V době zprovoznění jsem postupoval takto:

sudo apt install libnss3-tools 
git clone https://github.com/FiloSottile/mkcert && cd mkcert
go build -ldflags "-X main.Version=$(git describe --tags)"

Po kompilaci už stačilo spustit příkaz, který vygeneroval jak CA, tak i certifikát pro server. Pokud chci certifikát pro více domén najednou, tak poslouží například:

mkcert example.com "*.example.com" example.test

Certifikát byl vygenerován pro server v požadovaném formátu. Takže jsem ho jenom přenesl na server.

Do telefonu je potřeba nainstalovat certifikační autoritu. Program ji vygeneroval hned na začátku. Její umístění zjistím:

mkcert -CAROOT

Certifikační autoritu jsem měl umístěnu zde:

zenbook:~$ ls -l ~/.local/share/mkcert/
celkem 8
-r-------- 1 user group 2484 led  7 22:34 rootCA-key.pem
-rw-r--r-- 1 user group 1688 led  7 22:34 rootCA.pem

rootCA-key.pem je třeba chránit a nikam nepřenášet. Protože klíč podepisuje další certifikáty. Telefon pak přijme všechny certifikáty, vygenerované touto autoritou. Přenáším soubor rootCA.pem.

Soubor jsem si uložil na GDrive a pak jsem šel v telefonu do Nastavení→ Zabezpečení a poloha → Rozšířené → Šifrování a identifikační údaje → Instalovat z úložiště. Vybal jsem certifikační autoritu a povolil jsem ji pro VPN a aplikace.

  • it/iot/self-signed-certificate.1673203505.txt.gz
  • Poslední úprava: 2023/01/08 18:45
  • autor: Petr Nosek