在使用 Web Speech API 或其他現代瀏覽器 API 時,通常需要 HTTPS 環境才能運行。如果你是在本地開發或透過 FRP 代理,可以使用 OpenSSL 產生自簽章憑證。
步驟 1:使用 OpenSSL 產生憑證與金鑰
在終端機執行以下指令,這會產生一個有效期為一年的憑證 (cert.pem) 和私鑰 (key.pem):
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365 -nodes -subj "/C=TW/ST=Taipei/L=Taipei/O=Heathcliff/OU=IT/CN=localhost"
參數說明:
-x509: 輸出自簽章憑證。-newkey rsa:4096: 同時產生 4096 位元的 RSA 私鑰。-keyout key.pem: 私鑰儲存檔名。-out cert.pem: 憑證儲存檔名。-nodes: 不要加密私鑰(這樣啟動伺服器時不需要輸入密碼)。-days 365: 有效期 365 天。-subj: 直接指定證書資訊,避免互動式詢問。
步驟 2:在 Python (http.server) 中使用
在 Python 代碼中,你可以使用 ssl 模組來包裝你的伺服器 Socket:
import http.server
import ssl
import os
httpd = http.server.HTTPServer(('0.0.0.0', 5000), SimpleHandler)
# 配置 SSL
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile='cert.pem', keyfile='key.pem')
httpd.socket = context.wrap_socket(httpd.socket, server_side=True)
print("SSL Server started at https://localhost:5000")
httpd.serve_forever()
步驟 3:瀏覽器處理
由於是「自簽章」憑證,瀏覽器存取時會顯示「您的連線不是私密連線」。請點擊「進階」並選擇「繼續前往」,即可正常使用語音輸入功能。
發佈留言