1

Startssl.com 提供免费的 1 类 ssl 证书,使用非常独特且简单的身份验证系统。在它的登录过程中,它会将客户端重定向到https://auth.startssl.com/并且浏览器会询问他们的唯一证书。该阶段完成后,他们将被重定向到他们的控制面板,无需任何用户名/密码验证。

证书请求

我什至不知道 HTTP(s) 可以本机进行这种类型的身份验证!

我已经尝试使用curl来剖析这个请求,但我无法获得一个值 HTTPS 请求来通过。

X:~ ken$ curl https://auth.startssl.com/ --cert ./startssl-id.crt 
curl: (58) unable to set private key file: './startssl-id.crt' type PEM

curl 是否支持这种类型的 HTTPS 连接,如果支持,它将如何在服务器端和客户端进行配置?

4

2 回答 2

1

您正在使用客户端证书。为了查看流量,您的用户代理需要支持客户端证书。如果您只想查看网络流量,您可以使用浏览器的网络流量日志查看,但这不包括证书协商。

curl 确实支持客户端证书。你像这样使用它们:

curl --cert mycert.pem https://secure.example.com

如果您真的想深入了解数据包协商的细节,最好的选择可能是使用wireshark 来剖析数据包。

在 Apache 中配置它的文档在这里:

http://httpd.apache.org/docs/2.0/ssl/ssl_howto.html#accesscontrol

于 2011-09-17T03:53:41.780 回答
0

此页面很好地介绍了如何将客户端证书身份验证添加到任何 Web 应用程序:

https://www.scriptjunkie.us/2013/11/adding-easy-ssl-client-authentication-to-any-webapp/

至于使客户端证书与 curl 一起使用 - 您可能需要使用 openssl 将证书从 pkcs12 格式转换为普通私钥和证书,我已经这样做了:

openssl pkcs12 -CApath /etc/ssl/certs -in startcom.p12 -out start.pem -info -nodes

startcom.p12 是从 Firefox 导出的(我没有 mac,所以无法使用 Safari 进行测试)。

然后我可以:

openssl s_client -connect auth.startssl.com:443 -CApath /etc/ssl/certs/ -cert /tmp/start.pem -key /tmp/start.key -prexit -debug -msg -state -servername auth.startssl.com -tlsextdebug

连接,并且:

wget --verbose --debug --ca-directory=/etc/ssl/certs/ --certificate=/tmp/start.pem --private-key=/tmp/start.key  https://auth.startssl.com/

也有效。

于 2014-09-22T22:00:31.917 回答