V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Yien
V2EX  ›  问与答

ocserv 使用商业通配证书,如何生成客户端证书?

  •  
  •   Yien · 2014-12-25 12:52:47 +08:00 · 8734 次点击
    这是一个创建于 3381 天前的主题,其中的信息可能已经有所发展或是发生改变。

    证书提供商给了5个证书
    AddTrustExternalCARoot.crt
    ComodoUTNSGCCA.crt
    EssentialSSLCA_2.crt
    UTNAddTrustSGCCA.crt
    STAR_域名_com.crt

    使用用户名和密码登入正常,服务器证书也是受信的,但每次连接需要输入用户名和密码有点麻烦。
    所以请问如何生成受信的客户端证书?

    谢谢

    22 条回复    2018-03-29 06:39:05 +08:00
    ninjai
        1
    ninjai  
       2014-12-25 13:21:19 +08:00   ❤️ 1
    需要你是CA
    ooxxcc
        2
    ooxxcc  
       2014-12-25 13:30:35 +08:00   ❤️ 1
    等我有时间试试

    我的理解是

    # 服务器证书
    server-cert = /etc/ocserv/server-cert.pem
    server-key = /etc/ocserv/server-key.pem
    //用商业通配证书

    # 启用证书验证
    ca-cert = /etc/ssl/certs/my-ca-cert.pem
    //使用自建证书


    用户发送的是用上述ca证书签发证书

    没测试。。晚点试试
    vibbow
        3
    vibbow  
       2014-12-25 13:52:23 +08:00   ❤️ 1
    vibbow
        4
    vibbow  
       2014-12-25 14:01:44 +08:00
    还有一点就是,要做证书登录的话整个域名都需要验证证书的
    证书认证失败的话连错误页面都看不到的,只会提示SSL协商失败。

    所以建议把证书登录的网址单独放出来,做成SSO登陆类型的

    比如说网站是 www.example.com
    正常登陆的url是 login.example.com
    证书登录的url是 cerlogin.example.com
    vibbow
        5
    vibbow  
       2014-12-25 14:03:03 +08:00
    如果想做成即用证书登录,登陆失败又能看到错误页面之类的。

    那只能参考国内的银行,做成ActiveX控件去读取证书了。
    (所以请不要吐槽国内的银行,他们也是受技术限制啊)
    Yien
        6
    Yien  
    OP
       2014-12-25 14:14:15 +08:00
    @ooxxcc 意思是说,客户端证书自行生成就行,跟服务器证书没关系?但是我看教程好多客户端证书都是通过服务器证书生成的。
    Yien
        7
    Yien  
    OP
       2014-12-25 14:14:35 +08:00
    @vibbow 谢谢。
    ooxxcc
        8
    ooxxcc  
       2014-12-25 14:58:34 +08:00
    @Yien 客户端证书通过自建CA证书签发,服务端证书使用可信第三方签发

    客户端验证服务器证书,通过系统自带证书链验证,服务端使用自建CA证书验证客户端证书

    我是这么想的。。不过还没测试
    vibbow
        9
    vibbow  
       2014-12-25 14:59:22 +08:00
    @ooxxcc 这个思路是完全正确的。
    vibbow
        10
    vibbow  
       2014-12-25 15:02:55 +08:00
    @ooxxcc 不过问题在于,客户端安装了自签名CA颁发的证书,也就等于信任了这个自签名的CA。
    于是这个CA也给任意网站颁发的证书,比如说google,microsoft,twitter,也就会被客户端信任。
    这是一个安全隐患的。
    ooxxcc
        11
    ooxxcc  
       2014-12-25 15:32:49 +08:00
    @vibbow 客户端不需要安装ca证书吧?
    Daniel65536
        12
    Daniel65536  
       2014-12-25 15:38:36 +08:00
    @vibbow 客户端不需要安装这个CA。

    另外这个证书是保存在anyconnect程序内的,不会被iOS系统使用到。
    Daniel65536
        13
    Daniel65536  
       2014-12-25 15:40:13 +08:00
    https://darknode.in/archives/install-and-config-ocserv-on-debian.html

    我用@xxoo 家的泛域名证书实践过,自建CA只用来签自己的用户证书就好,然后把用户证书下载到Anyconnect内,然后配置一番即可免密码登录。
    vibbow
        14
    vibbow  
       2014-12-25 15:42:05 +08:00
    @ooxxcc
    @Daniel65536
    因为Firefox有个很蛋疼的设定:一个证书必须有完整的证书链,Firefox才会把他显示在证书选择列表里。所以自签名的CA,客户端光有证书还不行,必须把CA也可信了......
    Daniel65536
        15
    Daniel65536  
       2014-12-25 15:44:10 +08:00
    @vibbow ocserv和Firefox没啥联系啊……那是Cisco AnyConnect的服务端……Cisco AnyConnect这个客户端的逻辑和FF不一样,不需要信任自建CA的……
    vibbow
        16
    vibbow  
       2014-12-25 15:44:26 +08:00
    @ooxxcc
    @Daniel65536
    原来那玩意是Anyconnect服务器的啊.......

    不知道我RP比较好还是什么的,我常年用PPTP (手机)和SSTP (电脑) VPN(自建)都没压力...
    所以没纠结过这些玩意......
    ooxxcc
        17
    ooxxcc  
       2014-12-25 17:03:59 +08:00
    @vibbow
    @Daniel65536
    @Yien

    测试成功,不知道为啥openvpn的那套key不能通用,重新生成了一套

    可惜试了一下证书登陆和pam不能同时使能自动切换(自己用证书,朋友用密码,后端是radius)

    # User authentication method. Could be set multiple times and in that case
    # all should succeed.
    # Options: certificate, pam.
    #auth = "plain[./sample.passwd]"
    auth = "pam"
    auth = "certificate"

    这样会要求输入密码……
    Yien
        18
    Yien  
    OP
       2014-12-25 18:02:27 +08:00
    @ooxxcc 感谢,不能和PAM共存的话就意义不大了。
    Daniel65536
        19
    Daniel65536  
       2014-12-25 18:03:03 +08:00 via iPad
    @ooxxcc 试试把auth两个顺序换下,然后启用cisco-client-compat,另外在anyconnect上指定使用证书而不是自动决定。
    我怀疑是这最后一项的问题,anyconnect自动模式下没有优先发送证书导致ocserv那边fallback到了pam
    ooxxcc
        20
    ooxxcc  
       2014-12-25 20:32:09 +08:00
    @Daniel65536 顺序和cisco-client-compat都试过,两个都打开,然后客户端指定证书,还是要求输入密码
    Caixiaopig
        21
    Caixiaopig  
       2015-01-13 20:33:26 +08:00
    最终可行吗?
    目前我还是自生成CA证书然后签服务器端和客户端。本身也有泛域名的CA认证证书,但是没派上用场
    ioiioi
        22
    ioiioi  
       2018-03-29 06:39:05 +08:00
    @Daniel65536 这个帖子有点久了,不过我碰到一个问题,我用的是 cisco anyconnect secure mobility client 4.5,这个客户端已经没有 import 这个选项,所以我只能将用户证书下载到 windows 本机,然后使用右键“安装 pfx ”来安装证书,意味着这个证书是安装到 windows 里面的,而不仅仅是 Cisco anyconnect 可见。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   958 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:40 · PVG 04:40 · LAX 13:40 · JFK 16:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.