3CX 如何更新 PFX 证书(命令行版)

我们之前写过文章描述如何更新 3CX 的 SSL 证书:

这里面使用的证书都是给 Nginx 服务器使用的。通常是两个文件,一个 crt 证书文件,一个 key 密钥文件。

有些情况下客户提供的证书是 PFX 格式,只有一个证书文件,同时也需要密码。本文将介绍 3CX 如何更新 PFX 的 SSL 证书。

安装 OPENSSL

由于我们需要将 PFX 的格式转换成 3CX 能使用的格式,需要用到 OpenSSL 软件。

我们建议在安装 3CX 系统的 Debian 上执行命令。

Windows 可以在下面的网页上下载:https://slproweb.com/products/Win32OpenSSL.html

image-20230814144501616

下载后一路下一步就可以完成安装。

安装完成后打开 CMD 输入下面两行命令:

set OPENSSL_CONF=C:\Program Files\OpenSSL-Win64\bin\openssl.cfg
set Path= C:\Program Files\OpenSSL-Win64\bin

如果修改了安装路径,需要修改上面的命令

接着我们重新打开 CMD 并输入 openssl version 查询版本。

image-20230814144847251

正确显示版本,说明安装成功!

格式转换

接下来我们将 CMD 的工作路径切换到存放 PFX 证书的目录。并依次执行下列命令:

$ openssl pkcs12 -in [证书文件.pfx] -nocerts -out keyfile-encrypted.key

接着会要求输入 PFX 证书的密码,以及 PEM pass phrase。都输入同一个密码即可。

如果上述命令报错,是因为 openssl 版本太新了,需要在最后加一个 -legacy 的参数。

$ openssl pkcs12 -in [证书文件.pfx] -nocerts -out keyfile-encrypted.key -legacy
image-20230814160005296

接着输入下列命令,将 key 文件解密,并输入密码:

$ openssl rsa -in keyfil-encrypted.key -out keyfile-decrypted.key
image-20230814160205271

最后我们再生成证书文件:

$ openssl pkcs12 -in [证书文件.pfx] -clcerts -nokeys -out certificate.pem

如果报错依然在最后加上参数 -legacy

$ openssl pkcs12 -in [证书文件.pfx] -clcerts -nokeys -out certificate.pem -legacy
image-20230814160456313

导入证书

这样我们就得到了两个文件:

  • 证书文件:certificate.pem
  • 密钥文件:keyfile-decrypted.key

接下来将这两个文件替换 3CX 服务器中的文件地址,并重启 Nginx 服务即可。

  • Windows:C:\Program Files\3CX Phone System\Bin\nginx\conf\instance1
  • Linux:/var/lib/3cxpbx/Bin/nginx/conf/Instance1

如果话机有使用 TLS 注册,需要把证书内容复制到 3CX 管理控制台 -> 安全 -> 安全 SIP 里。

image-20230814161528681