如何為 Local Web App 產生自簽章 SSL 憑證 (OpenSSL)

作者:

分類:

在使用 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:瀏覽器處理

由於是「自簽章」憑證,瀏覽器存取時會顯示「您的連線不是私密連線」。請點擊「進階」並選擇「繼續前往」,即可正常使用語音輸入功能。


留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *