文档文档

启用 HTTPS 与 InfluxDB

此页面记录了早期版本的 InfluxDB OSS。InfluxDB OSS v2 是最新的稳定版本。请参阅等效的 InfluxDB v2 文档: 启用 TLS 加密

启用 HTTPS 会加密客户端和 InfluxDB 服务器之间的通信。当配置签名证书后,HTTPS 还可以验证连接客户端的 InfluxDB 服务器的真实性。

InfluxData 强烈建议 启用 HTTPS,特别是如果您计划通过网络向 InfluxDB 发送请求。

要求

要启用 HTTPS 与 InfluxDB,您需要一个现有的或新的 InfluxDB 实例和一个传输层安全 (TLS) 证书(也称为安全套接字层 (SSL) 证书)。

InfluxDB 支持三种类型的 TLS 证书

  • 由证书颁发机构签名的单域名证书

    单域名证书为 HTTPS 请求提供加密安全性,并允许客户端验证 InfluxDB 服务器的身份。使用此证书选项,每个 InfluxDB 实例都需要唯一的单域名证书。

  • 由证书颁发机构签名的通配符证书

    通配符证书为 HTTPS 请求提供加密安全性,并允许客户端验证 InfluxDB 服务器的身份。通配符证书可以跨不同服务器上的多个 InfluxDB 实例使用。

  • 自签名证书

    自签名证书由证书颁发机构 (CA) 签名。在您自己的机器上生成自签名证书。与 CA 签名证书不同,自签名证书仅为 HTTPS 请求提供加密安全性。它们不允许客户端验证 InfluxDB 服务器的身份。使用此证书选项,每个 InfluxDB 实例都需要唯一的自签名证书。

无论您的证书类型如何,InfluxDB 都支持由私钥文件 (.key) 和签名证书文件 (.crt) 文件对组成的证书,以及将私钥文件和签名证书文件合并到单个捆绑文件 (.pem) 中的证书。

以下两节概述了如何在 Ubuntu 16.04 上使用 CA 签名证书使用自签名证书设置 HTTPS。其他操作系统上的步骤可能会有所不同。

使用 CA 证书设置 HTTPS

步骤 1:安装证书

将私钥文件 (.key) 和签名证书文件 (.crt) 或单个捆绑文件 (.pem) 放在 /etc/ssl 目录中。

步骤 2:设置证书文件权限

运行 InfluxDB 的用户必须对 TLS 证书具有读取权限。

注意:您可以选择设置多个用户、组和权限。最终,请确保所有运行 InfluxDB 的用户都对 TLS 证书具有读取权限。

运行以下命令,为 InfluxDB 提供对证书文件的读取和写入权限。

sudo chown influxdb:influxdb /etc/ssl/<CA-certificate-file>
sudo chmod 644 /etc/ssl/<CA-certificate-file>
sudo chmod 600 /etc/ssl/<private-key-file>

步骤 3:查看 TLS 配置设置

默认情况下,InfluxDB 支持 Go crypto/tls 包文档的常量部分中列出的 TLS ciphersmin-versionmax-version 的值,并且取决于用于构建 InfluxDB 的 Go 版本。您可以配置 InfluxDB 以支持受限的 TLS 密码套件 ID 和版本列表。有关更多信息,请参阅传输层安全 (TLS) 配置设置

步骤 4:在 InfluxDB 配置文件中启用 HTTPS

HTTPS 默认情况下禁用。通过在配置文件 (/etc/influxdb/influxdb.conf) 的 [http] 部分中设置来启用 HTTPS

  • https-enabledtrue
  • https-certificate/etc/ssl/<signed-certificate-file>.crt(或为 /etc/ssl/<bundled-certificate-file>.pem
  • https-private-key/etc/ssl/<private-key-file>.key(或为 /etc/ssl/<bundled-certificate-file>.pem
[http]

  [...]

  # Determines whether HTTPS is enabled.
  https-enabled = true

  [...]

  # The SSL certificate to use when HTTPS is enabled.
  https-certificate = "<bundled-certificate-file>.pem"

  # Use a separate private key location.
  https-private-key = "<bundled-certificate-file>.pem"

步骤 5:重启 InfluxDB 服务

重启 InfluxDB 进程以使配置更改生效

sudo systemctl restart influxdb

步骤 6:验证 HTTPS 设置

通过使用 CLI 工具 连接到 InfluxDB 来验证 HTTPS 是否正常工作

influx -ssl -host <domain_name>.com

成功连接返回以下内容

Connected to https://<domain_name>.com:8086 version 1.x.x
InfluxDB shell version: 1.x.x
>

就这样!您已成功使用 InfluxDB 设置了 HTTPS。

使用自签名证书设置 HTTPS

步骤 1:生成自签名证书

以下命令生成一个私钥文件 (.key) 和一个自签名证书文件 (.crt),它们在指定的 NUMBER_OF_DAYS 内保持有效。它将这些文件输出到 InfluxDB 数据库的默认证书文件路径,并赋予它们所需的权限。

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/influxdb-selfsigned.key -out /etc/ssl/influxdb-selfsigned.crt -days <NUMBER_OF_DAYS>

当您执行该命令时,它将提示您提供更多信息。您可以选择填写该信息或将其留空;这两种操作都会生成有效的证书文件。

运行以下命令,为 InfluxDB 提供对证书的读取和写入权限。

chown influxdb:influxdb /etc/ssl/influxdb-selfsigned.*

步骤 2:查看 TLS 配置设置

默认情况下,InfluxDB 支持 Go crypto/tls 包文档的常量部分中列出的 TLS ciphersmin-versionmax-version 的值,并且取决于用于构建 InfluxDB 的 Go 版本。您可以配置 InfluxDB 以支持受限的 TLS 密码套件 ID 和版本列表。有关更多信息,请参阅传输层安全 (TLS) 设置 [tls]

步骤 3:在配置文件中启用 HTTPS

HTTPS 默认情况下禁用。通过在配置文件 (/etc/influxdb/influxdb.conf) 的 [http] 部分中设置来启用 HTTPS

  • https-enabledtrue
  • https-certificate/etc/ssl/influxdb-selfsigned.crt
  • https-private-key/etc/ssl/influxdb-selfsigned.key
[http]

  [...]

  # Determines whether HTTPS is enabled.
  https-enabled = true

  [...]

  # The TLS or SSL certificate to use when HTTPS is enabled.
  https-certificate = "/etc/ssl/influxdb-selfsigned.crt"

  # Use a separate private key location.
  https-private-key = "/etc/ssl/influxdb-selfsigned.key"

如果为 InfluxDB Enterprise 设置 HTTPS,您还需要配置元节点和数据节点之间不安全的 TLS 连接。说明在InfluxDB Enterprise HTTPS 设置指南中提供。

步骤 4:重启 InfluxDB

重启 InfluxDB 进程以使配置更改生效

sudo systemctl restart influxdb

步骤 5:验证 HTTPS 设置

通过使用 CLI 工具 连接到 InfluxDB 来验证 HTTPS 是否正常工作

influx -ssl -unsafeSsl -host <domain_name>.com

成功连接返回以下内容

Connected to https://<domain_name>.com:8086 version 1.x.x
InfluxDB shell version: 1.x.x
>

就这样!您已成功使用 InfluxDB 设置了 HTTPS。

将 Telegraf 连接到安全的 InfluxDB 实例

Telegraf 连接到正在使用 HTTPS 的 InfluxDB 实例需要一些额外的步骤。

在 Telegraf 配置文件 (/etc/telegraf/telegraf.conf) 中,编辑 urls 设置以指示 https 而不是 http,并将 localhost 更改为相关的域名。如果您正在使用自签名证书,请取消注释 insecure_skip_verify 设置并将其设置为 true

    ###############################################################################
    #                            OUTPUT PLUGINS                                   #
    ###############################################################################
>
    # Configuration for InfluxDB server to send metrics to
    [[outputs.influxdb]]
      ## The full HTTP or UDP endpoint URL for your InfluxDB instance.
      ## Multiple urls can be specified as part of the same cluster,
      ## this means that only ONE of the urls will be written to each interval.
      # urls = ["udp://127.0.0.1:8089"] # UDP endpoint example
      urls = ["https://<domain_name>.com:8086"]
>
    [...]
>
      ## Optional SSL Config
      [...]
      insecure_skip_verify = true # <-- Update only if you're using a self-signed certificate

接下来,重启 Telegraf,一切就绪!


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 将进入维护模式。您可以继续像现在一样使用它,而无需更改任何代码。

阅读更多

InfluxDB 3 开源版本现已公开 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版的一部分。

InfluxDB 3 Core 是我们新的开源产品。它是用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看