搭建anyconnect服务器

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Feng______/article/details/54892928

环境准备

实验环境
服务器:Ubuntu 16
客户端:iphone
为iphone搭建anyconnect服务器

服务器安装docker

sudo apt-get install docker.io

服务器安装certtool

sudo apt-get install gnutls-bin

手机端安装anyconnect

苹果商店下载

主要步骤

  1. 创建CA证书
  2. 创建服务器证书
  3. 创建客户端证书
  4. 启动docker
  5. 把客户端证书导入到手机上
  6. 客户端连接服务器

创建证书一般步骤

  1. 创建模版文件
  2. 生成密钥
  3. 用密钥与模版生成证书

具体步骤

先新建一个目录,暂叫为certs,用于存方这些证书文件
mkdir certs

创建CA证书

创建ca模版

创建文件 ca.tmpl输入下面内容。(cn与organization可以随便写)

cn = "ff"
organization = "ff"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key

生成ca密钥

certtool --generate-privkey --outfile ca-key.pem

生成CA证书

certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem

创建服务器证书

创建服务器证书模版

xxx.xxx.xxx.xxx写自己的服务地址或者域名。
创建文件 server.tmpl输入下面内容

cn = "xxx.xxx.xxx.xxx"
organization = "ff"
expiration_days = 3650
signing_key
encryption_key
tls_www_server

生成服务器证书密钥

certtool --generate-privkey --outfile server-key.pem

生成服务器证书

certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem

创建客户端证书

创建客户端证书模版

创建文件 user.tmpl输入下面内容

cn = "ffclient"
unit = "ffclientunit"
expiration_days = 365
signing_key
tls_www_client

生成客户端证书密钥

certtool --generate-privkey --outfile user-key.pem

生成客户端证书

certtool --generate-certificate --load-privkey user-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template user.tmpl --outfile user-cert.pem

将客户端证书导出成p12格式

这里需要给证书的起一个名字,并设置一个密码。自己记住,在导入到客户端时会需要。
certtool --to-p12 --load-privkey user-key.pem --pkcs-cipher 3des-pkcs12 --load-certificate user-cert.pem --outfile user.p12 --outder

启动docker

这是用是treelite的镜像,地址
这是用的是7000端口,可以随意设置。$HOME/certs为你放置这些证书的目录绝对路径。
docker run -d --privileged -p 7000:443 --name anyconnect -v $HOME/certs:/certs treelite/anyconnect

下载镜像需要一段时间。运行完成之后。检查是否运行成功。
sudo docker ps

把客户端证书导入到手机上

在这里就用的python的简单http服务器。
在证书目录运行:
python -m SimpleHTTPServer
在手机上打开anyconnect。
在诊断->证书->user->导入用户证书。
在弹出的输入url中输入http://xxx.xxx.xxx.xxx:8000/user.p12。(xxx.xxx.xxx.xxx为服务器地址)
如果正常,就要让你输入导出这个证书时的密码。
然后导入成功。

客户端连接服务器

打开手机 anyconnect -> 新建连接 -> 输入服务器地址(记得要加上上面的7000),如xxx.xxx.xxx.xxx:7000 -> 点高级 -> 点证书 -> 选刚上导入的证书 。
然后再进行连接。
第一次连接会有让你选择是否信任服务器证书,选择信任,继续。
这样就可以连接成功了。

可能出现的问题

docker未运行起来

检查证书有没有生成正确,最后该目录下会有十个文件。
检查命令是否执行,用sudo docker ps -a 来查看所有容器
docker logs <容器id>来看有没有出现什么错误

客户端的证书无法导入到手机上

检查防火墙有没有对8000端口进行限制。

无法连接到服务器

检查防火墙,及服务器端口设置
在客户端用telnet 看能否连接到7000端口上。

参考:

https://github.com/treelite/anyconnect
https://bitinn.net/11084/

展开阅读全文

没有更多推荐了,返回首页