14.4.6. İşlemler: anahtarlar, sona erme ve sorun giderme¶
Dağıtılmış her cihazda sertifika çalışmasının üç parçası vardır: özel anahtarı kameraya yerleştirildikten sonra korumak, sertifikanın sona ereceği günü planlamak ve uygulamada ortaya çıkan kısa hata modu listesi.
14.4.6.1. Özel anahtarın korunması¶
Kamera bir sertifika sunduğunda – bir TLS sunucusu olarak veya mTLS’te istemci olarak – özel anahtarının cihaz üzerinde, düz DER biçiminde, dosya sisteminde veya ROMFS içinde bulunması gerekir. Bu şekilde saklandığında, kamerada çalışan herhangi bir kod tarafından ve ona fiziksel erişimi olan herkes tarafından okunabilir: USB yığın depolama sürücüsü, bir REPL istemi veya ham flash bellek. ROMFS ve salt okunur bayraklar çıkarmayı değil, değiştirmeyi engeller. Bir cihazla birlikte gönderilen herhangi bir özel anahtarı, fiziksel veya kod erişimine sahip kararlı bir saldırgan tarafından kurtarılabilir kabul edin.
Bu, TLS’i anlamsız kılmaz – onu nasıl dağıtacağınızı şekillendirir:
Her cihaz için benzersiz bir anahtar ve sertifika kullanın. Filonun tamamına asla tek bir paylaşılan anahtar yüklemeyin: bunu tek bir birimden çıkarmak, bir saldırganın her kamerayı taklit etmesine olanak tanır. Cihaz başına anahtarlar, bir ele geçirilmeyi yalnızca o cihazla sınırlı tutar; bunu sunucu tarafında iptal edebilir veya devre dışı bırakabilirsiniz.
Sertifikaları kısa ömürlü tutun. Çalınan bir anahtar yalnızca sertifikası geçerliyken kullanışlıdır; kısa ömürler ve düzenli rotasyon zararı sınırlar (aşağıdaki Certificate expiry and rotation bölümüne bakın).
Mümkün olduğunda cihaza hiçbir gizli bilgi koymaktan kaçının. Yalnızca sunucuyu doğrulamanız gerekiyorsa (mTLS değil, sunucu kimlik doğrulaması), istemci olan kamera yalnızca – herkese açık olan – CA sertifikasını saklar ve çalmaya değer hiçbir özel anahtar tutmaz.
Bir anahtarı herkese açık bir aygıt yazılımı (firmware) imajında asla göndermeyin. Dağıttığınız bir aygıt yazılımı (firmware) derlemesinde ROMFS içine gömülü bir anahtar gizli değildir; aygıt yazılımını indiren herkes ona sahiptir. Cihaz başına sağlama (provisioning), anahtarı genel aygıt yazılımının içinde değil, sonrasında programlamak anlamına gelir.
Etki alanını sınırlayın. Sertifikanın doğruladığı şeyi kapsamlandırın (en az ayrıcalık) ve sızdırılan tek bir cihaz kimliğinin geri kalanını etkilemeden iptal edilebilmesini veya devre dışı bırakılabilmesini sağlayın.
Tehdit modeliniz fiziksel erişime sahip saldırganları içeriyorsa, cihaz anahtarının er ya da geç sızacağı varsayımıyla tasarlayın ve bunu hayatta kalınabilir hale getirin; bunu yapacak hiçbir olanağı bulunmayan bir donanımda gizli tutulabileceğini varsaymak yerine.
14.4.6.2. Sertifika sona ermesi ve rotasyonu¶
Her sertifika bir geçerlilik penceresi taşır. Bu süre geçtiğinde, bir ssl.CERT_REQUIRED eşi bağlantıyı reddeder – yani sona erme, teorik bir risk değil, gerçek ve planlanmış bir kesintidir. Geçerlilik kontrolünün dürüstçe değerlendirilebilmesi için kameranın saatinin de doğru olması gerekir.
Kendinden imzalı. Ömrü
-daysile seçtiniz. Süresi dolduğunda anahtarı/sertifikayı yeniden oluşturup yeniden dağıtmanız gerekir: DER dosyalarını yeniden kopyalayın veya sertifika gömülüyse ROMFS imajını yeniden derleyip yeniden flash’layın. Gerçekten harekete geçmeyi hatırlayacağınız bir-daysdeğeri seçin.Herkese açık CA. Bunlar kasıtlı olarak kısa ömürlüdür. Let’s Encrypt 90 günlük sertifikalar verir ve yaklaşık her 60 günde bir otomatik yenileme bekler; “bir kez kur ve unut” seçeneği yoktur.
Daha geniş eğilim tek yönlüdür: herkese açık olarak güvenilen TLS sertifikalarının maksimum geçerliliği sürekli kısalıyor. 825 gündü, şu anda 398 günle sınırlı ve CA/Browser Forum, bunu 2029’a kadar yaklaşık 47 güne doğru kademeli olarak düşüren bir program benimsedi. Bir cihaz tasarımı için çıkarılacak ders, sertifikaların kısa ömürlü olduğunu ve rotasyonun otomatik veya en azından rutin olması gerektiğini varsaymaktır – bir insanın on yıllık bir sertifikayı değiştirmesine bağlı bir ürün göndermeyin.
Pratik olarak, kamerada: sertifikanın yeniden flash’lanmadan değiştirilebildiği tasarımları tercih edin (yazılabilir bir dosya sistemi ve uzaktan güncelleme yolu veya kamerayı, merkezi olarak rotasyona soktuğunuz bir CA’ya güvenen bir istemci olarak çalıştırmak). Bir sertifikanın ROMFS içinde bulunması gerekiyorsa, aygıt yazılımı güncellemelerini onun ömrüne göre planlayın.
14.4.6.3. Sorun giderme¶
Saat ayarlanmış olmalıdır. Açılıştan beri saatini ayarlamamış bir kamera, sertifika geçerlilik kontrolünde başarısız olur – önce
ntptime.settime()çağırın.Ana bilgisayar adı eşleşmelidir. İstemci
server_hostnameilettiğinde, bunun sertifikanınsubjectAltNamedeğeriyle (veya eski yığınlardaCNile) eşleşmesi gerekir, aksi takdirde doğrulama başarısız olur.Yanlış biçim. Kameraya kopyalanan bir PEM dosyası yüklenmez – önce DER’e dönüştürün.
Sertifika süresi doldu. Daha önce çalışan ve şimdi
OSErrorile başarısız olan bir bağlantının nedeni basitçe süresi dolmuş bir sertifika olabilir – geçerlilik tarihlerini kontrol edin ve gerektiğinde yeniden oluşturun/yeniden dağıtın.Ed25519 anahtarları başarısız olur. Ed25519 değil, ECDSA P-256/P-384 veya RSA kullanın.
Hatalar
OSErrorbiçimindedir. MicroPythonssl.SSLErroruygulamaz; TLS hataları (hatalı sertifika, süresi dolmuş, bilinmeyen CA, biçim hatası, el sıkışma hatası)OSErrorolarak yükseltilir.