在RouterOS上使用CACert签发的证书

Chrome很快就不认没有CA的自签证书了,在RouterOS上使用Let’s Encrypt又非常麻烦,以及一些诸如OpenVPN服务器的服务必须使用证书,所以就想了一下用CACert这个社区驱动的证书签发机构来代替自签证书。(打开网站提示证书不被信任是正常的;该网站的证书也是由CACert自己签发的。)

首先我们来创建一个证书模板:

/certificate add name=my-cert common-name=your.domain.com key-size=4096 days-valid=180 key-usage=digital-signature,key-encipherment,key-agreement,server-gated-crypto,tls-client,tls-server

注意这边subject-alt-name ,别的key-usage 以及其它选项CACert都因为无法验证而不认,如果你填错了的话,之后导入的时候可能被RouterOS认成两个证书,找不到私钥。你需要修改的只有common-name 一项,填入你的服务器域名。

然后导出证书私钥和请求:

/certificate create-certificate-request template=my-cert key-passphrase=12345678 challenge-passphrase=abcdefgh

这边需要记住你的key-passphrase ,接下来导入证书的时候要用到。challenge-passphrase 是可选的但是根据实验,不填一个就没法正常导出,所以就随意填好了。

把RouterOS根目录下的certificate-request.pem 文件导出来,以纯文本方式打开,复制内容粘贴到CACert的新证书页面,确认后获得一个服务器证书。从网页复制这个证书保存成.crt 扩展名的文本文件(下文用cert.crt 作为文件名),传到RouterOS根目录。

接下来分别导入CACert根证书,以及证书签名过的公钥和私钥:

/tool fetch url=https://www.cacert.org/certs/root.crt
/certificate import file-name=root.crt
/certificate import file-name=cert.crt
/certificate import file-name=certificate-request_key.pem

如果提示输入passphrase的话呢就输入之前设定的key-passphrase 。一切正常的话,你的证书前面应该显示KLT ,如下图所示。

RouterOS WinBox showing certificate imported ("KLT")

最后给各种需要设定证书的地方设定使用刚导入的证书:

/ip service set www-ssl certificate=cert.crt_0
/interface ovpn-server server set certificate=cert.crt_0
/interface sstp-server server set certificate=cert.crt_0

最终效果(需要在电脑上导入CACert根证书或者手工信任证书):
RouterOS Webfig with SSL

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据