Curl startssl.com身份验证是如何工作的?

Curl startssl.com身份验证是如何工作的?,curl,https,certificate,ssl-certificate,handshake,Curl,Https,Certificate,Ssl Certificate,Handshake,Startssl.com提供免费的1级ssl证书,它使用一个非常独特和简单的身份验证系统。在登录过程中,它会将客户端重定向到,浏览器会请求其唯一的证书。在该阶段完成后,他们将被重定向到其控制面板,而无需任何用户名/密码验证 我甚至不知道HTTP(s)可以以本机方式进行这种身份验证 我已经尝试使用curl来解析这个请求,但是我无法获得HTTPS请求要通过的值 X:~ ken$ curl https://auth.startssl.com/ --cert ./startssl-id.crt cu

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

我甚至不知道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确实支持客户端证书。您可以这样使用它们:

curl --cert mycert.pem https://secure.example.com
如果您真的想了解数据包协商的实质,最好的办法可能是使用wireshark来解析数据包

在Apache中配置此功能的文档如下:


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

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

curl --cert mycert.pem https://secure.example.com
如果您真的想了解数据包协商的实质,最好的办法可能是使用wireshark来解析数据包

在Apache中配置此功能的文档如下:


本页介绍了如何将客户端证书身份验证添加到任何web应用程序:

至于让客户端证书与curl一起工作,您可能需要使用openssl将证书从pkcs12格式转换为普通私钥和证书。我已经完成了以下工作:

openssl pkcs12 -CApath /etc/ssl/certs -in startcom.p12 -out start.pem -info -nodes
从Firefox导出startcom.p12的地方(我没有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/

也可以使用。

本页介绍了如何将客户端证书身份验证添加到任何web应用程序:

至于让客户端证书与curl一起工作,您可能需要使用openssl将证书从pkcs12格式转换为普通私钥和证书。我已经完成了以下工作:

openssl pkcs12 -CApath /etc/ssl/certs -in startcom.p12 -out start.pem -info -nodes
从Firefox导出startcom.p12的地方(我没有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/

同样有效。

我尝试使用
--cert
选项,但是我不知道如何从注册期间提供给您的文件中获取curl可以使用的文件。
openssl x509-通知der-in certificate.crt-out certificate.pem
X:StartSSL ken$openssl x509-通知der-in./StartSSL-id.crt-out./StartSSL-id.pem无法加载证书140735182842300:错误:0D0680A8:asn1编码例程:ASN1\u CHECK\u TLEN:error tag:tasn\u dec.c:1319:140735182842300:error:0D07803A:ASN1编码例程:ASN1\u ITEM\u EX\u D2I:nested ASN1 error:tasn\u dec.c:381:Type=X509
我尝试使用
--cert
选项,但是我不知道如何从注册期间提供给您的文件中获取curl可以使用的文件。
openssl x509-通知der-in certificate.crt-out certificate.pem
X:StartSSL ken$openssl x509-通知der-in./StartSSL-id.crt-out./StartSSL-id.pem无法加载证书140735182842300:错误:0D0680A8:asn1编码例程:ASN1\u检查\u TLEN:错误标记:tasn\u dec.c:1319:140735182842300:错误:0D07803A:ASN1编码例程:ASN1\u项\u EX\u D2I:嵌套ASN1错误:tasn\u dec.c:381:Type=X509