返回

使用自签名 SSL 证书安全运行 Aiogram Webhook:一个完整指南

python

使用自签名 SSL 证书运行 Aiogram Webhook

引言

在使用 Telegram Bot 时,配置一个安全的 Webhook 是至关重要的,它允许 Telegram 与你的机器人进行交互。本文将指导你如何使用自签名 SSL 证书在 Linux 机器上运行 Aiogram Webhook。

生成自签名 SSL 证书

第一步是生成自签名 SSL 证书。这可以通过使用以下 OpenSSL 命令来完成:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

此命令将生成一个证书和一个密钥。确保将它们存储在安全的位置。

修改 Aiogram 配置

在 Aiogram 配置文件中(通常位于 /etc/aiogram/config.yml),添加以下内容:

webhook:
  host: "YOUR_WEBHOOK_HOST"
  port: YOUR_WEBHOOK_PORT
  certificate: "/etc/aiogram/cert.pem"
  key: "/etc/aiogram/key.pem"

YOUR_WEBHOOK_HOST 替换为你的 Webhook URL 的主机名,将 YOUR_WEBHOOK_PORT 替换为端口号。

启动 Aiogram Webhook

现在,你可以使用 aiogram.utils.executor.start_webhook 函数启动 Aiogram Webhook。

import aiogram.utils.executor

# 你 Telegram bot 的 Token
TELEGRAM_TOKEN = "YOUR_TELEGRAM_TOKEN"

# 使用你指定的 webhook URL
WEBHOOK_URL = "YOUR_WEBHOOK_URL"

async def on_startup(dp):
    await dp.bot.set_webhook(WEBHOOK_URL)

async def on_shutdown(dp):
    await dp.bot.delete_webhook()

if __name__ == "__main__":
    aiogram.utils.executor.start_webhook(
        dispatcher=dp,
        webhook_path=WEBHOOK_URL,
        on_startup=on_startup,
        on_shutdown=on_shutdown,
    )

优点

使用自签名 SSL 证书运行 Aiogram Webhook 的优点包括:

  • 无需使用 nginx 等 Web 服务器。
  • 安全且简单。

注意事项

  • 自签名 SSL 证书不会被浏览器信任。这可能导致浏览器警告或阻止访问你的 Webhook URL。
  • 确保妥善保护你的证书和密钥,因为它们授予对你的 Webhook 的访问权限。

常见问题解答

  • 如何生成 PEM 格式的自签名证书?
    你可以使用本文中提供的 OpenSSL 命令来生成 PEM 格式的自签名证书。

  • 我可以使用其他工具来生成自签名证书吗?
    是的,有许多其他工具可以生成自签名证书,例如 Let's Encrypt。

  • 我应该使用哪种 SSL 加密?
    建议使用 TLS 1.2 或更高版本以获得最佳安全性。

  • 如何修复浏览器警告?
    要修复浏览器警告,你需要使用由受信任的证书颁发机构颁发的证书。

  • 自签名证书安全吗?
    自签名证书与由受信任的证书颁发机构颁发的证书相比,安全级别较低,但它们对于内部或测试目的来说是足够的。

结论

使用自签名 SSL 证书在 Linux 机器上运行 Aiogram Webhook是一个简单而有效的方法,可以保护你的 Telegram Bot 与 Telegram 之间的通信。通过遵循本文中的步骤,你可以轻松地设置一个安全的 Webhook。