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

2014-12-25 12:52:47 +08:00
 Yien

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

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

谢谢

8764 次点击
所在节点    问与答
22 条回复
ninjai
2014-12-25 13:21:19 +08:00
需要你是CA
ooxxcc
2014-12-25 13:30:35 +08:00
等我有时间试试

我的理解是

# 服务器证书
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
2014-12-25 13:52:23 +08:00
vibbow
2014-12-25 14:01:44 +08:00
还有一点就是,要做证书登录的话整个域名都需要验证证书的
证书认证失败的话连错误页面都看不到的,只会提示SSL协商失败。

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

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

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

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

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

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

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

不知道我RP比较好还是什么的,我常年用PPTP (手机)和SSTP (电脑) VPN(自建)都没压力...
所以没纠结过这些玩意......
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
2014-12-25 18:02:27 +08:00
@ooxxcc 感谢,不能和PAM共存的话就意义不大了。
Daniel65536
2014-12-25 18:03:03 +08:00
@ooxxcc 试试把auth两个顺序换下,然后启用cisco-client-compat,另外在anyconnect上指定使用证书而不是自动决定。
我怀疑是这最后一项的问题,anyconnect自动模式下没有优先发送证书导致ocserv那边fallback到了pam
ooxxcc
2014-12-25 20:32:09 +08:00
@Daniel65536 顺序和cisco-client-compat都试过,两个都打开,然后客户端指定证书,还是要求输入密码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/156559

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX