Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
it:iot:self-signed-certificate [2023/01/08 18:43] – Petr Nosek | it:iot:self-signed-certificate [2024/01/01 13:51] (aktuální) – Petr Nosek | ||
---|---|---|---|
Řádek 19: | Řádek 19: | ||
</ | </ | ||
- | Certifikát byl vygenerován pro server v požadovaném formátu. Takže jsem ho jenom přenesl na server. | + | Certifikát byl vygenerován pro server v požadovaném formátu. Takže jsem ho jenom přenesl na server. |
+ | |||
+ | |||
+ | |||
+ | ===== Přenesení certifikační autority | ||
+ | |||
+ | Do telefonu je potřeba nainstalovat certifikační autoritu. Program ji vygeneroval hned na začátku. | ||
<code bash> | <code bash> | ||
Řádek 39: | Řádek 45: | ||
Soubor jsem si uložil na GDrive a pak jsem šel v telefonu do **Nastavení-> | Soubor jsem si uložil na GDrive a pak jsem šel v telefonu do **Nastavení-> | ||
+ | |||
+ | |||
+ | U telefonu jsem potřeboval certifikační autoritu v jiném formátu. Tento příkaz převede soubor CA.pem ve formátu PEM na soubor CA.crt ve formátu DER (CRT). | ||
+ | |||
+ | <code bash> | ||
+ | openssl x509 -in rootCA.pem -outform DER -out CA.crt | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Převod DER certifikátů pro Arduino ===== | ||
+ | |||
+ | Potřeboval jsem použít certifikát pro připojení k MQTT serveru přes Arduino. Program pro Arduino je v C. Hledal jsem způsob v jakém formátu dodat certifikáty. | ||
+ | |||
+ | Po nějaké době hledání jsem našel způsob. Použil jsem certifikáty v binárním formátu DER. A ty jsem převedl do hexadecimálního formátu skrze nástroj **xxd**. | ||
+ | |||
+ | <code bash> | ||
+ | xxd -i client.crt > client_crt.h | ||
+ | xxd -i client.key > client_key.h | ||
+ | xxd -i ca.crt > ca_crt.h | ||
+ | </ | ||
+ | |||
+ | Tímto způsobem jsem získal soubory, ve kterých jsou certifikáty jako pole bajtů. | ||
+ | V Arduionu jsem pak mohl načíst tyto soubory a použít: | ||
+ | |||
+ | <code cpp> | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | // Vložení certifikátů | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | |||
+ | // ... [zbytek vašeho kódu] | ||
+ | |||
+ | void setup() { | ||
+ | // ... [připojení k WiFi a další nastavení] | ||
+ | |||
+ | // Nastavení SSL/TLS certifikátů a klíčů | ||
+ | // Proměnné předané v parametrech jsou v obsahu vygenerovaných souborů *.h | ||
+ | BearSSL:: | ||
+ | BearSSL:: | ||
+ | BearSSL:: | ||
+ | | ||
+ | espClient.setInsecure(); | ||
+ | espClient.setClientRSACert(& | ||
+ | mqttClient.setServer(mqttBroker, | ||
+ | |||
+ | // ... [nastavení MQTT klienta] | ||
+ | } | ||
+ | |||
+ | // ... [zbytek vašeho kódu] | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Ještě doplním, že protože používám self signed certifikát, | ||
+ |