TDengine IDMP 的 Excel Addin 功能如何设置自签证书有效期 10 年

为什么有这个需求

TDengine IDMP (以下简称“IDMP”)的用户在访问 IDMP 的 web 页面方面大致分为 2 种:

  1. IDMP 只在公司内部使用,不会公布到互联网上,大多数用户应该是使用这种方法
  2. IDMP 会发布到互联网上,用户自己申请证书

针对公司内部系统(不对外)的情况,申请 SSL 证书的核心思路与对外服务网站完全不同。公网 SSL 证书要求域名必须能从互联网解析以完成所有权验证,而内部系统使用的通常是无法从公网访问的私有域名或 IP 地址,无法通过常规方式申请公网信任的证书。

我们不推荐给用户主动去申请这个 IDMP 的证书,正常情况下,用户自己的系统需要他们自己申请维护证书。

如果用户想要使用 Excel 的 addin 功能,那必须配置证书才可以。我们的 IDMP 内置了一个证书,但是只有 3 个月有效期,这对于使用方法 1 的用户来说比较麻烦。有的用户即使选择方法 1,也可能会考虑自己去申请证书。但有的用户就不希望麻烦,希望我们直接给他们设置好。

TDengine IDMP 的 Excel Addin 功能如何设置自签证书有效期 10 年 - TDengine Database 时序数据库

正好有个用户遇到了这个情况,而且他们不会公布到互联网上,他不希望自己去折腾证书,希望我们来处理完成。我在我们自己内部环境测试验证了下,可以考虑使用自签证书,帮用户解决这个问题。

证书申请操作方法

TDengine IDMP 的 Excel Addin 功能如何设置自签证书有效期 10 年 - TDengine Database 时序数据库

我们默认安装完成 IDMP 后,在 config 目录下会有 2 个文件:

  • privkey.pem (私钥):这是服务器的“身份证密钥”,必须保密,只能放在服务器上。它用于解密信息并向客户端证明自己的身份 。
  • certbundle.pem (证书包):这是服务器的“数字身份证”,它包含了服务器的公钥、身份信息等。客户端会用这个文件来验证它正在通信的服务器是否是你想要访问的那个 。

如果不想只有 3 个月使用期限,可以自己配置生成证书。

步骤 1:在一台管理机器上生成 CA 根证书

# 生成CA私钥
openssl genrsa -out ca.key 2048

# 生成CA根证书(假如设置有效期10年)
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=TDengine/CN=TDengine Internal CA"

步骤 2:在 idmp.tdengine.net 服务器上生成服务器证书

登录到运行 idmp.tdengine.net 的服务器,执行以下命令:

# 1. 生成服务器私钥
openssl genrsa -out privkey.pem 2048

# 2. 生成证书签名请求(CSR)
openssl req -new -key privkey.pem -out idmp.csr \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=TDengine/CN=idmp.tdengine.net"

# 3. 创建扩展配置文件
cat > idmp.ext <<EOF
subjectAltName = DNS:idmp.tdengine.net
EOF


# 4. 使用CA证书签署,生成服务器证书

openssl x509 -req -in idmp.csr -CA ca.crt -CAkey ca.key -CAcreateserial \
    -out idmp.crt -days 3650 -sha256 -extfile idmp.ext

# 5. 创建certbundle.pem
cat idmp.crt ca.crt > certbundle.pem

# 6. 查看生成的证书内容(确认域名是否正确)
openssl x509 -in certbundle.pem -text -noout | grep -A1 "Subject Alternative Name"

执行完后,就得到了:privkey.pem(私钥)、certbundle.pem(证书包)

步骤 3:客户端安装 CA 根证书

ca.crt 分发给所有需要访问 https://idmp.tdengine.net 的电脑,双击安装到“受信任的根证书颁发机构”。

配置 IDMP 证书

拿到了privkey.pemcertbundle.pem文件后,还需要将 IDMP 里默认自带的证书进行替换。

首先需要确保 IDMP 的 6034 端口已经处于监听状态。6034 端口是 IDMP HTTPS 服务端口。

TDengine IDMP 的 Excel Addin 功能如何设置自签证书有效期 10 年 - TDengine Database 时序数据库

1. 可以将自带的证书进行备份一下,例如

 mkdir bak
 mv privkey.pem certbundle.pem bak

2. 拷贝新证书到 /usr/local/taos/idmp/config 目录下

如果是安装包安装,可以直接拷贝替换;

如果是 docker 方式安装,可以使用 docker cp 拷贝进去,或者映射出 config 目录,拷贝替换

3. 拷贝完成后,需要重启 IDMP 的服务进行生效

4. 客户端机器安装根证书,将之前生成的 ca.crt 文件拷贝到客户端机器,进行安装,注意:需要将正式安装到受信任的根证书颁发机构,否则后续 Excel 认证失败。

5. 域名解析配置

如使用内置测试证书,需在客户端的 hosts 文件中添加域名解析:

192.168.1.100  idmp.tdengine.net  # 请替换为实际的服务器 IP

hosts 文件位置:

  • Linux/macOS: /etc/hosts
  • Windows: C:\Windows\System32\drivers\etc\hosts

6. 浏览器测试访问 https://idmp.tdengine.net:6034/ 并查看证书信息,确保生效。如果这里看到的仍是之前证书,或者到期的证书,请检查之前步骤,可能是没有替换完成或证书有问题。

TDengine IDMP 的 Excel Addin 功能如何设置自签证书有效期 10 年 - TDengine Database 时序数据库

7. 安装 Excel addin 插件

以 windows 为列,管理员身份打开 PowerShell,执行以下命令:

powershell -ExecutionPolicy ByPass -c "& ([scriptblock]::Create((irm https://taosinstallers.blob.core.windows.net/tdengine-excel-add-in/install.ps1))) -Action Install -ForceCloseExcel -Url 'https://idmp.tdengine.net:6034' -EnableLogging"

Excel 里面选择获取加载项,然后点击共享文件夹,点击添加 TDengine EAI。

TDengine IDMP 的 Excel Addin 功能如何设置自签证书有效期 10 年 - TDengine Database 时序数据库

点击 TDengine EAI 下的设置按钮,登录 IDMP 账户即可使用:

TDengine IDMP 的 Excel Addin 功能如何设置自签证书有效期 10 年 - TDengine Database 时序数据库

8. 如果中间遇到问题,可以尝试卸载插件、再安装,卸载命令

powershell -ExecutionPolicy ByPass -c "& ([scriptblock]::Create((irm https://taosinstallers.blob.core.windows.net/tdengine-excel-add-in/install.ps1))) -Action Uninstall -ForceCloseExcel"

至此,Excel addin 的自签证书 10 年有效期就配置完成了。

注意事项

  1. 如果之前安装的 IDMP 的版本比较低,需要升级到最新版本,否则不支持此功能
  2. 有的旧版本 IDMP 里的 https 端口设置的为 6037 端口,比如 1.0.10.0 版本,还是建议先升级版本(新版本的 https 端口为 6034),如果不想升级,那可以调整 yml 文件映射的端口
  3. 安装证书时候需要选择安装到 受信任的根证书颁发机构,否则无法认证通过

参考:https://idmpdocs.taosdata.com/operation/installation/excel-addin-guide/