Android 手机访问 https://login.alibaba-inc.com/ 这个页面,会弹出如下请求是否安装证书的对话框,请问这个 Web 服务端怎么设置?参考 1,参考 2
1
just1 2015-12-05 09:07:30 +08:00 via Android
可以啊
|
3
just1 2015-12-05 09:15:34 +08:00 via Android
@schemacs uv,firefox 都可以正常访问, chrome 提示安装证书。 你要配置 Apache 还是 nginx ?
|
7
lhbc 2015-12-05 09:29:55 +08:00 via Android
F12 看下网络请求和代码不就知道了,反正都是 http ,浏览器看得一清二楚。
|
9
nbndco 2015-12-05 09:39:10 +08:00
一般配置文件里加上
SSLCACertificatePath SSLCACertificateFile 再设置 SSLVerifyClient require 验证客户端是不是有由指定 CA 签发的证书。 具体设置要看你用 nginx 还是 apache 。 应该不算是 HTTP 的一部分。 |
10
schemacs OP |
11
yeyeye 2015-12-05 12:37:25 +08:00
是双向认证吧?请在搜索引擎搜索
nginx 双向认证 apache 双向认证 |
12
schemacs OP @yeyeye 嗯,已经找到了,谢谢。
可以正常工作的配置如下 ``` listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /etc/letsencrypt/live/xxx.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/xxx.com/privkey.pem; ssl_verify_client on; ssl_verify_depth 2; ssl_client_certificate /etc/letsencrypt/live/your-ca.pem; ``` |
13
schemacs OP 不过新问题是, Android 上的 Chrome 会提示安装客户端证书,但是 Mac 的 Chrome 上什么提示也没有啊,是不是实现不同?后者会查看这个 ca 是否在本机的信任 ca 列表里?
直接 curl 显示: ``` <html> <head><title>400 No required SSL certificate was sent</title></head> <body bgcolor="white"> <center><h1>400 Bad Request</h1></center> <center>No required SSL certificate was sent</center> <hr><center>nginx</center> </body> </html> ``` |
14
mudkip 2015-12-05 15:25:24 +08:00
ssl_verify_client / ssl_verify_depth / ssl_client_certificate 这些东西是验证客户端身份用的,除非你只限自己一个人访问,否则不要写。
|