【问题标题】:How does startssl.com authentication work?startssl.com 身份验证如何工作?
【发布时间】:2011-11-19 02:42:31
【问题描述】:

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 连接,如果支持,如何在服务器端和客户端进行配置?

【问题讨论】:

    标签: curl https certificate ssl-certificate handshake


    【解决方案1】:

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

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

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

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

    在 Apache 中进行配置的文档在这里:

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

    【讨论】:

    • 我尝试使用 --cert 选项,但我不确定如何从他们在注册期间提供给您的文件中获取 curl 可以使用的文件。
    • openssl x509 -inform der -in certificate.crt -out certificate.pem
    • X:StartSSL ken$ openssl x509 -inform der -in ./startssl-id.crt -out ./startssl-id.pem unable to load certificate 140735182842300:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1319: 140735182842300:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:tasn_dec.c:381:Type=X509
    【解决方案2】:

    此页面有一个很好的如何将客户端证书身份验证添加到任何 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/
    

    也可以。

    【讨论】:

      猜你喜欢
      • 2013-06-02
      • 2018-11-30
      • 2015-06-13
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      相关资源
      最近更新 更多