<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Apr 19, 2014 at 2:48 AM, Ransom Richardson <span dir="ltr"><<a href="mailto:ransomr@talko.com" target="_blank">ransomr@talko.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">
<div style="font-size:12pt;font-family:Calibri,Arial,Helvetica,sans-serif">
<p>I set up a local test server, that has a cert signed by my own self-signed CA cert. Also the CN in the cert is not local host. As expected, curl doesn't like this:<br>
</p>
<p><br>
</p>
<div>talko@ubuntu:~/dev/httpcbench$ curl <a href="https://localhost:8443/delay" target="_blank">https://localhost:8443/delay</a></div>
<div>curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:</div>
<div>error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed</div>
<div><br>
</div>
<div>talko@ubuntu:~/dev/httpcbench$ curl --cacert priv/ssl/rootCA.pem <a href="https://localhost:8443/delay" target="_blank">https://localhost:8443/delay</a></div>
<div>curl: (51) SSL: certificate subject name 'httpcbench server' does not match target host name 'localhost'<br>
</div>
<div><br>
</div>
<div>However httpc doesn't complain, despite not having the CA cert:<br>
</div>
<div><br>
</div>
<div>
<div>3> httpc:request("<a href="https://localhost:8443/delay" target="_blank">https://localhost:8443/delay</a>").</div>
<div>{ok,{{"HTTP/1.1",200,"OK"},</div>
<div>     [{"connection","keep-alive"},</div>
<div>      {"date","Sat, 19 Apr 2014 00:31:56 GMT"},</div>
<div>      {"server","Cowboy"},</div>
<div>      {"content-length","0"}],</div>
<div>     []}}</div>
<div><br>
</div>
<div>And even if I tell it to verify the peer, it doesn't complain that the host name doesn't match the cert:</div>
<div><br>
</div>
<div>
<div>6> httpc:request(get, {"<a href="https://localhost:8443/delay" target="_blank">https://localhost:8443/delay</a>", []}, [{ssl, [{verify, verify_peer}, {cacertfile, "./priv/ssl/rootCA.pem"}]}], []).</div>


<div>{ok,{{"HTTP/1.1",200,"OK"},</div>
<div>     [{"connection","keep-alive"},</div>
<div>      {"date","Sat, 19 Apr 2014 00:36:09 GMT"},</div>
<div>      {"server","Cowboy"},</div>
<div>      {"content-length","0"}],</div>
<div>     []}}</div>
<div><br>
</div>
<div>I actually noticed this when trying to test hackney, which has the same behavior as httpc.<br>
</div>
<div><br>
</div>
<div>Does anyone know if any of the many other http clients out there do any HTTPS validation?<br>
</div>
<div><br>
</div>
<div><br></div></div></div></div></div></blockquote><div>I don't know for httpc but hackney doesn't pass any default option to the ssl socket when you connect in HTTPS. Except if you pass the insecure option to the request (which provides the same feature you find in curl).  </div>

<div><br></div><div>- benoit</div></div></div></div>