终于受不了每次科学上网都要输一遍密码了。于是下决心再折腾一遍 AnyConnect 的证书登录。最后,写了个脚本以便下次『一键安装』。
因为以前搞定了密码登录,所以安装 ocserv 和客户端 AnyConnect 的步骤就可以省了。
好消息是,CentOS 7 上已经有 ocserv 的安装源了。所以,一般只需要执行下面的命令就可以安装 ocserv 了。
$ sudo yum install ocserv\
这里有几篇参考文章:
折腾笔记:
架设OpenConnect Server给iPhone提供更顺畅的网络生活
CentOS 7 安装 ocserv (OpenConnect Server) 并实现证书登录
Ubuntu ocserv搭建
ocserv 的 man 手册
下面的内容主要涉及服务端的证书生成和配置。
证书配置非常繁琐,主要是因为概念理不清楚,密钥、模板、签名、密码、证书、PKCS12 等等,太多概念需要理解;然后,操作步骤太多、参数繁杂。
本文并不打算讨论以上种种。这些都由下面的『一键安装脚本』搞定。脚本内容也不在此详细解释,只略记一下脚本的使用步骤。
下载脚本至 /etc/ocserv 或你服务器上 ocserv 服务的配置文件路径下:
给脚本加上可执行权限:
$ chmod +x setup-anyconnect.sh
执行:
$ ./setup-anyconnect.sh for soli on solicomo.com
其中 soli 改成你自己想要的名字,solicomo.com 改成你服务器的域名或者 IP 。
可以重复执行此命令给多个用户生成证书。只需改一下 soli 为其他名字即可。
配置 ocserv
以上脚本会在当前路径下生成一个 pki 目录,下面有几个子目录和文件。
假设当前路径为 /etc/ocserv,打开 ocserv 的配置文件 ocserv.conf 并修改如下配置项:
server-cert = /etc/ocserv/pki/server/server-cert.pem
server-key = /etc/ocserv/pki/server/server-key.pem
ca-cert = /etc/ocserv/pki/ca/ca-cert.pem
crl = /etc/ocserv/pki/server/crl.pem
和证书相关的就这四项,其他配置项及防火墙配置请参见上面的『参考文章』。
下载并安装客户端证书
把 pki/client/soli/soli-cert.p12 (其中的两个 soli 换成你自己的名字)通过邮件或其他方式发送到手机,并安装。
这一步『参考文章』里也有说明,网上也很容易搜到如何把服务证书设置为『信任』。
至此,AnyConnect 的证书登录就应该可用了。(如果还不行,可以在文后留言交流。)
还有个问题就是,如果这台服务器上的 ocserv 有很多人共用,并且某天想把其中的一个人剔除出去,该怎么办呢?
这个脚本也能帮你搞定。假设你不再想为 luna 这个用户提供服务了。只需执行以下命令:
$ ./setup-anyconnect.sh revoked luna on solicomo.com
同样的,把 solicomo.com 替换成你自己的服务器域名或 IP 。然后就等着 ocserv 重新加载配置文件即可。在这里插入代码片