BearSSL biztonságos szerver osztály

TLS-titkosított szervert valósít meg opcionális ügyféltanúsítvány-ellenőrzéssel. Az általános információkért lásd: Szerver osztály, az alapvető kiszolgáló- és BearSSL-koncepciókért pedig a BearSSL biztonságos kliens osztály.

setBufferSizes(int recv, int xmit)

A BearSSL::WiFiClientSecure metódushoz hasonlóan beállítja a vételi és átviteli puffer méretét. Ne feledje, hogy a kiszolgálók nem kérhetnek pufferméretet az ügyféltől, ezért ha ezeket összezsugorítják, és a kliens a fogadási puffernél nagyobb darabot próbál küldeni, az mindig meghiúsul. Meg kell hívni a begin() előtt.


Szervertanúsítványok beállítása

A TLS-kiszolgálóknak szükségük van egy tanúsítványra, amely azonosítja magát, és tartalmazza a nyilvános kulcsát, valamint egy privát kulcsot, amellyel az információkat titkosítani fogják. Az alkalmazás szerzője felelős ennek a tanúsítványnak és kulcsnak a létrehozásáért, akár egy önaláírt generátor, akár egy kereskedelmi hitelesítés-szolgáltató segítségével. Ne használja újra a példákban szereplő tanúsítványokat.

Ez a példaparancs létrehoz egy 2048 bites RSA kulcsot és tanúsítványt:


openssl req -x509 -nodes -newkey rsa:2048 -keyout key.pem -out cert.pem -days 4096

Ismét az alkalmazás szerzőjén múlik, hogy létrehozza ezt a tanúsítványt és kulcsot, és megőrizze a titkos kulcsot.

setRSACert(const BearSSL::X509List *chain, const BearSSL::PrivateKey *sk)

Beállít egy RSA-tanúsítványt és kulcsot, amelyet a kiszolgáló használ a kapcsolatok fogadásakor. Meg kell hívni a begin() előtt

setECCert(const BearSSL::X509List *chain, unsigned cert_issuer_key_type, const BearSSL::PrivateKey *sk)

Elliptikus görbe tanúsítványt és kulcsot állít be a szerver számára. Meg kell hívni a begin() előtt.

Kliens munkamenetek (a kapcsolatok gyors újraindítása)

A TLS kézfogási folyamata hosszú időt vesz igénybe az ügyfél és a szerver közötti oda-vissza járás miatt. Lerövidítheti az ügyfelek munkameneteinek gyorsítótárazásával, amely néhány lépést kihagy a TLS-kézfogásban. Ahhoz, hogy ez működjön, az ügyfélnek gyorsítótárba kell helyeznie a munkamenetet. A BearSSL::WiFiClientSecure éppúgy képes erre, mint a modern webböngészők.

Íme, milyen teljesítményjavításokat láthat az ESP8266 TLS-kézfogásainál, amelynek órajele 160 MHz-re van beállítva egy viszonylag alacsony késleltetésű hálózaton:

setCache(BearSSL::ServerSessions *cache)

Beállítja a gyorsítótárat a szerver munkameneteihez. A gyorsítótár méretének kiválasztásakor ne feledje, hogy minden ügyfélmunkamenet 100 bájtot vesz igénybe. Ha 10 munkamenetre állít be egy gyorsítótárat, az 1000 bájtot vesz igénybe. Meg kell hívni a begin() előtt.

A gyorsítótár létrehozásakor a 2 elérhető konstruktor bármelyikét használhatja:


Ügyféltanúsítványok megkövetelése

A TLS-kiszolgálók megkérhetik a klienst, hogy azonosítsa magát egy tanúsítvány továbbításával a kézfogás során. Ha az ügyfél nem tudja továbbítani a tanúsítványt, a szerver megszakítja a kapcsolatot.

setClientTrustAnchor(const BearSSL::X509List *client_CA_ta)

Beállítja azt a megbízhatósági horgonyt (általában egy önaláíró CA), amely ellen minden kapott tanúsítványt ellenőrizni kell. Meg kell hívni a begin() előtt.


© Copyright 2017, Ivan Grokhotkov Revision b080c507. Fordította: Maczák András