V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
通过以下 Referral 链接购买 DigitalOcean 主机,你将可以帮助 V2EX 持续发展
DigitalOcean - SSD Cloud Servers
windblueos
V2EX  ›  VPS

vps 上搭建 ocserv 并使用证书验证 anyconnect 客户端使用

  •  4
     
  •   windblueos · 2014-10-13 12:42:35 +08:00 · 5105 次点击
    这是一个创建于 3485 天前的主题,其中的信息可能已经有所发展或是发生改变。
    经过这几周的折腾,我已经可以在digital ocean上搭建ocserv并在iPhone上使用证书登录,不需要再输入烦人的用户名/密码验证,具体操作看以下两篇教程

    1 http://imkevin.me/post/80157872840/anyconnect-iphone 阅读如何编译搭建ocserv,如何打开tcp转发以及iptable配置

    2 http://bao3.blogspot.com/2014/10/ocserv-085.html 参考如何配置ocserv 配置文件 路由列表以及证书生成使用

    注意:
    一: 使用教程二的版本 ocserv0.85/0.86皆可,教程一版本过老

    踩过的坑:
    教程二中配置文件ocserv.conf中 我建议是不需要使用
    user-profile = /usr/local/etc/ocserv/profile.xml,
    我之前因为这个出现过证书无法匹配的莫名bug。

    如果你之前有配置过这项,不管哪个平台,请先卸载anyconnect客户端并重装
    45 条回复    2017-02-06 19:25:50 +08:00
    xieyingli
        1
    xieyingli  
       2014-10-13 13:05:53 +08:00
    赞一个,各方面都是走在最前沿啊,可学!
    hvsy
        2
    hvsy  
       2014-10-13 14:30:49 +08:00
    @windblueos 为什么我配置的oserv能够连上却不能上网,防火墙什么的都关闭了.使用的是plain密码验证.
    windblueos
        3
    windblueos  
    OP
       2014-10-13 14:40:08 +08:00
    tcp转发以及iptable是否正确,看第一篇教程
    gissimo
        4
    gissimo  
       2014-10-13 14:42:26 +08:00 via iPhone
    速度如何?听说anyconnect速度不快?

    另外传说anyconnect锁屏不断线?
    hvsy
        5
    hvsy  
       2014-10-13 14:43:06 +08:00
    @windblueos iptable关掉了.tcp转发是sysctl net.ipv4.ip_forward=1 ???
    windblueos
        6
    windblueos  
    OP
       2014-10-13 14:45:41 +08:00
    @gissimo 这个看你vps的速度,我这边手机上用的听可以

    @hvsy 你Google下吧,你基本设置都还没搞定
    sansam
        7
    sansam  
       2014-10-13 14:56:29 +08:00
    @windblueos 亲,介绍一下移动端的证书要怎么配置呢?或者哪有相关的文档介绍,iphone和android。
    windblueos
        8
    windblueos  
    OP
       2014-10-13 14:58:42 +08:00
    @sansam 吐血,第二篇教程不就是了啊!!!!!服务器生成ca server client证书,并把client证书转成p12格式 给android安装不就行了吗
    gissimo
        9
    gissimo  
       2014-10-13 15:26:32 +08:00 via iPhone
    @windblueos 我就是digital ocean sf2. 你感觉速度能到多少
    sansam
        10
    sansam  
       2014-10-13 16:43:23 +08:00
    @windblueos 多谢,已成功
    windblueos
        11
    windblueos  
    OP
       2014-10-13 17:37:37 +08:00
    @gissimo anyconnect速度比不上shadowsock,我只是用来刷twittering fb,youtube在家里维持在360p左右吧
    gissimo
        12
    gissimo  
       2014-10-13 18:32:12 +08:00 via iPhone
    @windblueos 我用来cisco ipsec
    RoberMac
        13
    RoberMac  
       2014-10-13 22:36:32 +08:00
    @windblueos 搞不定...
    10月 13 10:34:00 default.hostname ocserv[701]: worker: xxxxx:55650 no certificate...on
    10月 13 10:34:00 default.hostname ocserv[698]: main: xxxxx:55650 main-misc.c:414:...ed
    10月 13 10:34:04 default.hostname ocserv[698]: main: main-misc.c:743: cannot open: /sys/fs...ks
    10月 13 10:34:04 default.hostname ocserv[702]: GnuTLS error (at worker-vpn.c:732): A TLS f...te
    10月 13 10:34:04 default.hostname ocserv[698]: main: xxxxx:55661 main-misc.c:414:...ed
    10月 13 10:34:20 default.hostname ocserv[698]: main: main-misc.c:743: cannot open: /sys/fs...ks
    10月 13 10:34:20 default.hostname ocserv[703]: worker: xxxxx:55662 tlslib.c:282: ...d.
    10月 13 10:34:20 default.hostname ocserv[699]: sec-mod: received request from pid 703 and ...99
    10月 13 10:34:20 default.hostname ocserv[699]: sec-mod: cmd [size=309] sm: decrypt
    10月 13 10:34:20 default.hostname ocserv[698]: main: xxxxx:55662 main-misc.c:414:...ed
    Hint: Some lines were ellipsized, use -l to show in full.
    windblueos
        14
    windblueos  
    OP
       2014-10-14 09:17:04 +08:00
    请按照第二篇教程,除了那个user-profile = /usr/local/etc/ocserv/profile.xml,请完全跟它conf一模一样再试试,然后客户端卸载后重装
    @RoberMac
    jaminzhang
        15
    jaminzhang  
       2014-10-15 15:51:16 +08:00
    @windblueos
    这个证书认证每次连接的时候,会不会提示“不信任的服务器”?

    我按照教程2的来可以用证书连接上,但浏览器打不开网页。
    使用用户名密码认证可以正常打开网页。
    windblueos
        16
    windblueos  
    OP
       2014-10-15 16:55:57 +08:00
    @jaminzhang 自用证书 是会提示不信任的,自己关掉就可以

    上不了网页就不知道了,你具体看log 搜索下
    Jays
        17
    Jays  
       2014-10-16 01:07:48 +08:00 via iPad
    已有CA证书该怎么 配置客户端证书呢?
    kkxxxxxxx
        18
    kkxxxxxxx  
       2014-10-17 09:08:13 +08:00
    iOS版Anyconnect成功.
    android版Anyconnect不成功,是否一定要root?
    bitinn
        19
    bitinn  
       2014-10-19 00:30:00 +08:00
    ocserv搭了很久,但一直没搞客户端证书验证,今晚试了下,很简单的几步结果搞了一晚,最后才发现是certtool生成的p12无法导入AnyConnect的iOS客户端。

    换成openssl果然就好了,特此提醒下各位。

    用这个通过:openssl pkcs12 -export -inkey user-key.pem -in user-cert.pem -certfile ca-cert.pem -out user.p12

    用这个被拒:certtool --to-p12 --load-ca-certificate ca-cert.pem --load-privkey user-key.pem --load-certificate user-cert.pem --outfile user.p12
    bitinn
        20
    bitinn  
       2014-10-19 00:37:47 +08:00
    顺道问下:iOS的AnyConnect有什么办法信任自己建立的CA证书签名的服务器证书吗?或者说有啥办法导入自己建的CA证书?
    bitinn
        21
    bitinn  
       2014-10-19 01:15:35 +08:00
    @bitinn 自我解答,server-cert生成的时候template必须要写对cn(公用名),如果是ip地址的要写ip,否则无法在第一次连接时导入。
    thank243
        22
    thank243  
       2014-11-08 08:09:31 +08:00 via Android
    @bitinn 我用certtool生成的P12直接就是0字节
    lj0014
        23
    lj0014  
       2014-11-19 13:15:33 +08:00
    @windblueos 请教下教程二的.tmpl文件里的域名一定要是有效的吗,我现在直接用教程提供的文件里面的域名,然后客户端连接时报错如下:
    Failed to get configuration from secure gateway. Contact your system administrator.
    lj0014
        24
    lj0014  
       2014-11-19 14:02:24 +08:00
    @lj0014 将.tmpl文件修改成我的有效域名后,windows可以用证书登录了,但是android手机依然不行,提示:Connection attempt has failed.
    fzss
        25
    fzss  
       2014-11-24 09:35:20 +08:00
    你好这个搭好之后,有新版本出来了,应该怎么更新啊?
    fzss
        26
    fzss  
       2014-11-24 10:09:42 +08:00
    @fzss 直接装新版本就行了
    dynfeisu
        27
    dynfeisu  
       2014-11-27 20:57:09 +08:00
    我想请问一下PAM+FREERADIUS 怎么设置?


    网上教程看了很多都弄不好
    dynfeisu
        28
    dynfeisu  
       2014-11-27 22:52:57 +08:00
    Message from syslogd@localhost at Nov 27 22:49:40 ...
    ocserv[2621]:PAM-auth pam_auth_pass: Authentication service cannot retrieve authentication info


    /etc/pam.d/ocserv:

    # PAM Configuration for OpenConnect Server
    # Created by tony, 11/13/13
    # This is designed to work with RADIUS PAM Module
    auth required /lib/security/pam_radius_auth.so
    tankren
        29
    tankren  
       2014-12-20 15:10:49 +08:00
    证书不可信的问题怎么解决?本地自签名,还是根本无解?
    xmvagrant
        30
    xmvagrant  
       2014-12-23 17:05:11 +08:00
    @tankren 导入服务器证书就好。
    Yien
        31
    Yien  
       2014-12-25 11:54:08 +08:00 via iPhone
    我用的是商业的通配证书,请问如何生成客户端证书?
    kxjhlele
        32
    kxjhlele  
       2014-12-27 13:52:42 +08:00
    @Yien 商业证书,客户端不需要设置,直接就可以连接上
    kxjhlele
        33
    kxjhlele  
       2014-12-27 16:14:29 +08:00
    @Yien PS 要生成客户端证书,必须要私钥,这个是不可能给你的,
    root证书,rootkey,客户端key,客户端请求文件 这4个缺一不可,
    Yien
        34
    Yien  
       2014-12-27 16:26:29 +08:00
    @kxjhlele 尝试了一下,不成功。是不是需要修改什么设置?
    hrbwaxdoll
        35
    hrbwaxdoll  
       2014-12-28 09:17:31 +08:00
    hrbwaxdoll
        36
    hrbwaxdoll  
       2014-12-28 09:18:36 +08:00
    先搞通了,再搞定制化,这个是默认密码登录,我正在修改具体的证书登录的方式,看贴学习ing...
    hrbwaxdoll
        37
    hrbwaxdoll  
       2014-12-28 10:01:14 +08:00
    Job for ocserv.service failed. See 'systemctl status ocserv.service' and 'journalctl -xn' for details

    我按照教程,启动后提示上面的错误。。。。郁闷 啊。
    hrbwaxdoll
        38
    hrbwaxdoll  
       2014-12-28 10:04:48 +08:00
    ocserv.service - OpenConnect SSL VPN server
    Loaded: loaded (/usr/lib/systemd/system/ocserv.service; enabled)
    Active: failed (Result: exit-code) since 六 2014-12-27 21:01:39 EST; 1min 20s ago
    Docs: man:ocserv(8)
    Process: 28584 ExecStart=/usr/local/sbin/ocserv --pid-file /var/run/ocserv.pid --config /usr/local/etc/ocserv/ocserv.conf (code=exited, status=1/FAILURE)
    Main PID: 27981 (code=exited, status=0/SUCCESS)

    12月 27 21:01:39 myhost systemd[1]: Starting OpenConnect SSL VPN server...
    12月 27 21:01:39 myhost ocserv[28584]: The option 'listen-clear-file' cannot be combined with 'aut...ate'
    12月 27 21:01:39 myhost systemd[1]: ocserv.service: control process exited, code=exited status=1
    12月 27 21:01:39 myhost systemd[1]: Failed to start OpenConnect SSL VPN server.
    12月 27 21:01:39 myhost systemd[1]: Unit ocserv.service entered failed state.
    hrbwaxdoll
        39
    hrbwaxdoll  
       2014-12-28 10:24:16 +08:00
    解决了,注释了 listen-clear-file

    不过客户端连接的时候是提示:
    VPN客户端未通建立连接~
    lesswest
        40
    lesswest  
       2014-12-30 15:32:11 +08:00
    @bitinn cn我设置了我的VPS的IP地址也不好用,改成localhost或者127.0.0.1或者0.0.0.0也不好用,是什么原因啊,求帮助。
    alexe
        41
    alexe  
       2015-01-17 07:57:30 +08:00
    你好,按照教程2中的方法撤销证书后还是可以用被撤销的证书拨通vpn,楼主知道怎么能够真正的注销证书吗,谢谢!
    alexe
        42
    alexe  
       2015-01-20 08:06:51 +08:00
    做了更多测试,撤销证书后还需要在配置文件中加入crl = /path/crl.cert才能开启ocserv的证书确认功能。但是我在开启了crl选项后,不但被侧小的证书不能用了,没有被撤销的证书也不能用了,控制台提示在client xml文件中找不到group设置。可是我的配置文件中没有设置xml文件。请帮忙,谢谢!
    alexe
        43
    alexe  
       2015-01-21 06:19:29 +08:00
    按照另外一篇教程解决了撤销一个证书后所有证书统统失效的情况,仔细对比后发现是用户证书模板的问题。用下面教程的用户模板即可解决。
    http://blog.ltns.info/linux/vps_debian_ocserv_support_anyconnect_certificate/
    ghovik
        44
    ghovik  
       2015-03-22 01:12:25 +08:00
    小白一枚,原理一知半解,照着这个(http://bitinn.net/11084/)搭建的ocserv,一开始没有设置iptables规则,安卓anyconnect可以连接成功,但是不能上网.
    然后按照教程把iptables规则设置好了,anyconnect直接连接不上了,显示连接超时.求大神给个指点,多谢!
    p.s.用的是用户名密码登陆.
    JenghongLee
        45
    JenghongLee  
       2017-02-06 19:25:50 +08:00
    作者 你好。我想请问 iphone 怎么将证书导入 anyconnect ?好像只能通过 URL 你写的上面的两个连接都已经失效了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3637 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 00:16 · PVG 08:16 · LAX 17:16 · JFK 20:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.