14.4.2. 先決條件:OpenSSL 與時鐘¶
在動手操作的任何頁面能運作之前,有兩樣東西必須先就緒:開發機器上的 OpenSSL 命令列工具,以及每次 TLS 交握當下相機上正確的時鐘。
14.4.2.1. 安裝 OpenSSL¶
本節中的指令使用 openssl 命令列工具,於你的開發機器上執行,而非在相機上。它通常已經安裝好了;可用以下指令確認:
openssl version
如果缺少它,請依你的作業系統安裝:
Linux -- 使用套件管理員,例如
sudo apt install openssl(Debian/Ubuntu)、sudo dnf install openssl(Fedora/RHEL)或sudo pacman -S openssl(Arch)。macOS -- 使用 Homebrew 執行
brew install openssl。Windows -- 安裝諸如 Win32/Win64 OpenSSL 之類的建置版、使用套件管理員(
winget install ShiningLight.OpenSSL.Light或choco install openssl),或使用 Git for Windows 隨附的openssl(從 Git Bash 執行它)。
14.4.2.2. 設定時鐘¶
ssl.CERT_REQUIRED 會檢查每張憑證的有效期間,因此相機的時鐘必須正確,否則驗證會失敗(剛開機的相機完全不知道現在是幾點)。在網路連線正常的情況下,ntptime 模組會透過 NTP 取得時間,並以 UTC 設定板載 RTC(machine.RTC):
import ntptime
ntptime.settime() # query NTP and set machine.RTC (UTC)
在此之後,time.localtime() 與 machine.RTC 便會反映當前的 UTC 時間。啟用網路介面的方式因板而異,此處不予示範;後續頁面的範例皆假設相機已連線完成。