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.Lightchoco 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 時間。啟用網路介面的方式因板而異,此處不予示範;後續頁面的範例皆假設相機已連線完成。