Let’s Encrypt 是现在比较热门的免费 SSL 证书颁发机构,3CX 也是他们的银牌赞助商,3CX 使用的 FQDN 都是用 Let’s Encrypt 的证书。
那么我们通过这篇文档介绍一下如何使用 SSL 加密我们自己的 FQDN 吧。
准备工作
- 一个安装 3CX 的 Debian 服务器
- 一个指向 3CX 服务器固定 IP 的域名
申请 Let’s Encrypt 证书
因为 Let’s Encrypt 证书也是为域名颁发的证书 DV SSL,比较适合小型的 3CX。而大型公司基本都有自己的 EV, OV SSL 证书。
所以在这里我们把测试环境放到了云上,选择手动安装 3CX 的方式。如果是使用 3CX 镜像安装的小伙伴们可能需要调换一下我们的步骤。
首先我们需要把域名指向 3CX 服务器的 IP 地址,我这里使用的域名是: lqzz.site。环境为 Azure Debian 9.5 系统。
首先我们需要 ssh 进入系统申请证书,在这里我们使用 acme 脚本:
使用 Windows 服务器的朋友可以用 win-acme
curl https://get.acme.sh | sh
如果提示 command not found
就装一下 curl。
apt-get install -y curl
apt-get install -y socat
申请证书:
acme.sh --issue -d lqzz.site --standalone
因为这个命令是监听 80 端口完成验证,所以使用 3CX ISO 镜像的小伙伴需要先停止 nginx 的服务。
输完命令后会出现以下信息:
[Fri Aug 31 15:41:58 UTC 2018] Standalone mode.
这段信息是说域名已经生成在了/root/.acme.sh/lqzz.site/
目录下了,但是我们不会直接使用这个文件,而是使用 installcert 命令来安装证书。
先新建一个文件夹放 ssl 证书:
mkdir /etc/3cxssl
安装证书:
acme.sh --installcert -d lqzz.site --key-file /etc/3cxssl/lqzz.key --fullchain-file /etc/3cxssl/lqzz.crt
会出现下面的提示,说明安装成功。
[Fri Aug 31 15:59:32 UTC 2018] Installing key to:/etc/3cxssl/lqzz.key
[Fri Aug 31 15:59:32 UTC 2018] Installing full chain to:/etc/3cxssl/lqzz.crt
安装 3CX & 证书
输入以下命令手动安装 3CX
wget -O- http://downloads-global.3cx.com/downloads/3cxpbx/public.key | apt-key add -
echo "deb http://downloads-global.3cx.com/downloads/debian stretch main" | tee /etc/apt/sources.list.d/3cxpbx.list
apt-get update
apt-get install 3cxpbx
apt-get install net-tools
安装完毕后跳出的选 1,并进入 :5015 进行配置。
一路配置到 FQDN 这步,选自己的 FQDN:
接着输入自己的域名,并分别上传刚才的 crt 和 key 文件。
接着继续走完其他配置。在配置完成后就在左上角看到我们的 ssl 证书
Renew Key
因为 Let’s Encrypt 的 ssl 证书只有 90 天,所以我们需要设置自动 renew。
使用 acme.sh 脚本重新安装就可以了。
[Fri Aug 31 15:41:58 UTC 2018] Standalone mode. [Fri Aug 31 15:41:58 UTC 2018] Creating domain key [Fri Aug 31 15:41:59 UTC 2018] The domain key is here: /root/.acme.sh/lqzz.site/lqzz.site.key [Fri Aug 31 15:41:59 UTC 2018] Single domain='lqzz.site' [Fri Aug 31 15:41:59 UTC 2018] Getting domain auth token for each domain [Fri Aug 31 15:41:59 UTC 2018] Getting webroot for domain='lqzz.site' [Fri Aug 31 15:41:59 UTC 2018] Getting new-authz for domain='lqzz.site' [Fri Aug 31 15:42:00 UTC 2018] The new-authz request is ok. [Fri Aug 31 15:42:00 UTC 2018] Verifying:lqzz.site [Fri Aug 31 15:42:00 UTC 2018] Standalone mode server [Fri Aug 31 15:42:04 UTC 2018] Success [Fri Aug 31 15:42:04 UTC 2018] Verify finished, start to sign. [Fri Aug 31 15:42:06 UTC 2018] Cert success. -----BEGIN CERTIFICATE----- MIIF/jCCBOagAwIBAgISA+IqCNdJzM8VV/C3IQEVHtRbMA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODA4MzExNDQyMDVaFw0x ODExMjkxNDQyMDVaMBQxEjAQBgNVBAMTCWxxenouc2l0ZTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBANR/AH/NqvCJGFETZseX4cJTVZ0mce232zxUE1qf 51BjxqKy5HhR2b/SW54WtJYf+OjRx0PQDBpAIGPbIMx5s41owr+fUSYF2G+8t+Wg DRGy8+p6tznrGjFt3ODFf7b5GJt+EPUdjcnVVnkVRkrODd623B2OchIhqnNbfYr0 OwnFJZJajliwv4IPDMRDkgNlLeZMC4/GwuX6NO2OTVoTG6osJe5JDsCRZnxdxHZi unMokfvaerne3JsbYT698VaXsrAgxt/QPH2/6ZmkLKNSO/BPTtL2oYFMHy34+fpu SBHO3pItzoFBuMqwSMIRbhaGCgoBhVgs2xgh3fxJ4f2oXD8CAwEAAaOCAxIwggMO MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw DAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU9OY2kAPGVbfouyGodtvuxna30qEwHwYD VR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEEYzBhMC4G CCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQub3JnMC8G CCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQub3JnLzAU BgNVHREEDTALgglscXp6LnNpdGUwgf4GA1UdIASB9jCB8zAIBgZngQwBAgEwgeYG CysGAQQBgt8TAQEBMIHWMCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNy eXB0Lm9yZzCBqwYIKwYBBQUHAgIwgZ4MgZtUaGlzIENlcnRpZmljYXRlIG1heSBv bmx5IGJlIHJlbGllZCB1cG9uIGJ5IFJlbHlpbmcgUGFydGllcyBhbmQgb25seSBp biBhY2NvcmRhbmNlIHdpdGggdGhlIENlcnRpZmljYXRlIFBvbGljeSBmb3VuZCBh dCBodHRwczovL2xldHNlbmNyeXB0Lm9yZy9yZXBvc2l0b3J5LzCCAQUGCisGAQQB 1nkCBAIEgfYEgfMA8QB2AMEWSuCnctLUOS3ICsEHcNTwxJvemRpIQMH6B1Fk9jNg AAABZZCmC1YAAAQDAEcwRQIgTkpTBz23Xf5cLI5qVdUO9aBTJMWD1LAxRMLFHeft HMMCIQCakle5N/g0ea0vF3AA1oCwNu/Bj5yZSM4gk4/Iq1zmGAB3ACk8UZZUyDll uqpQ/FgH1Ldvv1h6KXLcpMMM9OVFR/R4AAABZZCmDWEAAAQDAEgwRgIhAPblk+Mi W43fRTJacL+BmlftW3a7gVXS2I2bfpFAfDEoAiEArCKH+4SSyFzydJgz5Wlj2TXF 2I3RbQQt+uonArAc+S4wDQYJKoZIhvcNAQELBQADggEBABKcm75B7/AgYfDSoEeE /v+1/5xBv/swGQeNZ66+URzAu06rnlk1uUML55j0HlV6hZCAxASCfUMu7yWmR6iS 8bpsXG0P84gQKfyolx4TWsrWrOx9Pq05KDTSzT6oBkxw0YqMNdL6usvUlZajBiLu 6w48O+j/bN5YBI+fIWjvpjqB5EorWy9mvdymMOlCzWRcaLPfVEMXx/g8k17i2n3l hBT32SuAaA63zf8SVnpYuii6XSGzJLLNYzoupXIYA57yNsjD0WQ0gTcoTjVDy5sq ozc4/aTM5PLPXHiBOUD8bsiBgkAyeFiajZZPJG/o7/WKLgg0qiiC0Ryfrvkl4XdD 6y4= -----END CERTIFICATE----- [Fri Aug 31 15:42:06 UTC 2018] Your cert is in /root/.acme.sh/lqzz.site/lqzz.site.cer [Fri Aug 31 15:42:06 UTC 2018] Your cert key is in /root/.acme.sh/lqzz.site/lqzz.site.key [Fri Aug 31 15:42:06 UTC 2018] The intermediate CA cert is in /root/.acme.sh/lqzz.site/ca.cer [Fri Aug 31 15:42:06 UTC 2018] And the full chain certs is there: /root/.acme.sh/lqzz.site/fullchain.cer
这样证书就会自动更新了。
可以看到在差不多还剩 30 天证书过期的时候 acme 会 Renew 这个 SSL 证书。