由于奥科的 SBC 中不可以用其他的 CSR,必须用奥科自己生成的,所以在这篇文章中我们将介绍如何给奥科 SBC 颁发 Let’s Encrypt 的证书。
在进行操作之前,我们需要先拥有一个域名。我们这里使用的域名是 58voip.xyz。
SBC 配置过程
先登录 SBC,进入 -> IP NETWORK -> SECURITY -> TLS Contexts,点击 New 新建:
输入这个 TLS Contexts 的名称,并选择要用到的 TLS Version。其他的可以不动。
设置好以后点击下方的 APPLY 按钮。
新建好以后下方可以看到对应的信息,最下方会有 3 个按钮,点击 Change Certificate 修改信息。
进去后可以看到一个列表,我们在 Common Name[CN] 和 1st Subject Alternative Name [SAN] 中输入我们的域名。其中 1st Subject Alternative Name [SAN] 中需要将选项从 EMAIL 改为 DNS。
接着滑到下方的 GENERATE NEW PRIVATE KEY,选择需要的 Private Key Size 默认用 2048 即可。点击 Generate Private-Key 生成 Key。
点击后会弹出警告说此操作会覆盖当前的 private key,选择 yes 确认。
创建成功后会有新的对话框,点击 close 关闭后,再点击左上方的 Save 保存改动。
接下来我们点击 Create CSR 按钮生成 CSR:
点击后下方会生成 CSR 信息,我们复制后储存到一个文本文件中。我这里取名 csr.txt,以便后续使用。
使用 acme.sh 签发证书
访问 acme.sh 查看如何安装。Windows 系统需安装 curl, openssl,crontab 组件。
安装完以后会将 acme.sh 复制到用户目录下的 .acme.sh 目录下,我们可以使用以下命令创建 alias,windows 用户可以创建环境变量:
acme.sh=~/.acme.sh/acme.sh
安装好以后在任何路径使用命令 acme.sh 了,可以输入 acme.sh -v
看一下,使用 dns 签名需要 2.4.4 以上版本:
显示如上就没有问题,接着我们进入刚才保存的 csr.txt 文件的目录。输入下面的命令:
acme.sh --showcsr --csr csr.txt
可以从反馈结果中看到签证的域名以及 private key 的长度。
接下来输入下面命令进行签证:
acme.sh --signcsr --csr csr.txt --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
输入后可以看到上图所示,其中 domain 和 TXT value 的值需要添加到 DNS 记录中。添加过程根据不同域名管理商会有区别(这里的 Domain 填前面那部分就可以了),这里以 namecheap 为例:
接下来等待解析就可以了,如果电脑上有 nslookup 的话,可以使用下列命令检查是否解析过来了:
nslookup -type=txt _acme-challenge.58voip.xyz 8.8.8.8
需要把域名替换成自己的。如果解析结果和 TXT value 一致就说明可以了:
解析过来以后我们使用下面的命令 renew 一下就可以了:
acme.sh --renew -d 58voip.xyz --yes-I-know-dns-manual-mode-enough-go-ahead-please
如果成功会显示 success,并且会在 ~/.acme.sh/domain 目录下生成我们需要的证书文件,我们也可以输入下面命令 install 一下:
acme.sh --install-cert -d 58voip.xyz --cert-file cert.pem --fullchain-file fullchain.pem
输完后证书就会生成在当前目录下了,接着我们把 fullchain.pem 上传到奥科 SBC 就可以了。
上传证书
回到奥科网关到 TLS Contexts,点击最下面的 Change Certificate,划到最下面的 UPLOAD CERTIFCATE FILES FROM YOUR COMPUTER,选中证书并上传。
上传完后会有提醒,我们顺手点 Save 保存一下。
回到上一页,点击 Certificate Information,显示 OK 就表示证书没问题了。