用`-k`卷曲而不用`-k`卷曲

时间:2017-01-26 01:25:50

标签: ssl curl nginx haproxy insecure-connection

当我使用curl 而不是 -k打开网址时,我的请求正在通过,我能够看到预期的结果。

$ curl -vvv https://MYHOSTNAME/wex/archive.info -A SUKU$RANDOM
*   Trying 10.38.202.192...
* Connected to MYHOSTNAME (10.38.202.192) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* Server certificate: *.MYCNAME
* Server certificate: ProdIssuedCA1
* Server certificate: InternalRootCA
> GET /wex/archive.info HTTP/1.1
> Host: MYHOSTNAME
> User-Agent: SUKU19816
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: nginx/1.10.2
< Date: Thu, 26 Jan 2017 01:08:40 GMT
< Content-Type: text/html;charset=ISO-8859-1
< Content-Length: 19
< Connection: keep-alive
< Set-Cookie: JSESSIONID=1XXXXXXXX3E58093E816FE62D81; Path=/wex/; HttpOnly
< X-WebProxy-Id: 220ffb81872a
< 




status=Running
* Connection #0 to host MYHOSTNAME left intact

但是当我打开相同的网址 -k时,它失败了。对我来说没有任何意义,因为在我的理解中-k的目的只是跳过证书验证

$ curl -vvv https://MYHOSTNAME/wex/archive.info -A SUKU$RANDOM -k
*   Trying 10.38.202.192...
* Connected to MYHOSTNAME (10.38.202.192) port 443 (#0)
* Server aborted the SSL handshake
* Closing connection 0
curl: (35) Server aborted the SSL handshake

请求流程:

  1. 在HAPROXY计算机上发生SSL终止
  2. HAPROXY会将请求转发给nginx

1 个答案:

答案 0 :(得分:2)

要解决此类问题,--resolve option可能很有用:

curl -k -I --resolve www.example.com:80:192.0.2.1 https://www.example.com/
  

为特定主机和端口对提供自定义地址。运用   这样,您可以使curl请求使用指定的地址和   防止使用通常解析的地址。考虑   它是命令行上提供的一种/ etc / hosts替代方案。该   端口号应该是用于特定协议的号码   主机将用于。这意味着如果需要,您需要多个条目   为同一主机但不同的端口提供地址。

特别是如果您尝试从中获取的站点使用SNI:在这种情况下,您可以使用--resolve选项指定在TLS客户端中使用的服务器名称。

尝试一个问题排查步骤:更新curlcompile it yourself from the sources并重试。首先,某些curl版本(例如MacOS)据称不会为-k / --insecure发送SNI。

如果这是你遇到的问题,你无法取代curlthere’s a workaround you can use,主要涉及创建自己的CA和私钥以及CSR,并调整你的haproxy。

设置完毕后,您可以使用-k--insecure来代替--cacert / --capath,而不是curl https://example.com/api/endpoint --cacert certs/servers/example.com/chain.pem curl https://example.com/api/endpoint --capath certs/ca

curl --insecure https://sni.velox.ch/

如果您遇到的问题是由SNI引起的,您也可以使用https://sni.velox.ch/这样的网站对其进行问题排查:

-k

否则,如果它不是SNI,那么我记得在--insecure / //Main form// <?php $msgerror = "Veuillez remplir tous les champs "; if(isset($_POST["bouton10"])){ $link=Mysqli_connect($host,$login,$pass,$dbname); $id = $_REQUEST["Picolo4"]; $Nom = $_REQUEST["Picolo1"]; $Prenom = $_REQUEST["Picolo2"]; $Email = $_REQUEST["Picolo3"]; if ($id !="" && $Nom !="" && $Prenom !="" && $Email !=""){ $recherche= "SELECT Ref,Question,Choix,Commentara FROM questionnaire WHERE Qref ='$id'"; mysqli_query($link,$recherche); $un = 0; $result= mysqli_query($link,$recherche); while($row = mysqli_fetch_assoc($result)){ $Ref =$row["Ref"]; $Question = $row["Question"]; $un = $un+1; echo" <tr bgcolor=\"white\"> <td>$Question position: $un </td> <td> <input type=\"radio\" name =\"$un\" id =\"un\" value = \"3\"> <input type=\"radio\" name =\"$un\" id =\"un\" value = \"2\"> <input type=\"radio\" name =\"$un\" id =\"un\" value = \"1\"> <input type=\"radio\" name =\"$un\" id =\"un\" value = \"0\"> <input type=\"radio\" name =\"$un\" id =\"un\" value = \"0\"> </td> <td width = \"60\"> <textarea> </textarea> </td> </tr> </div> </div> "; } else { echo "<script type='text/javascript'>alert('$msgerror')</script>"; } } ?> //Insert part // <?php $link=Mysqli_connect($host,$login,$pass,$dbname); $msgerror = "Veuillez remplir tous les champs "; if(isset($_POST["bouton10"])){ $link = mysqli_connect($host,$login,$pass,$dbname); if ($id !="" && $Nom !="" && $Prenom !="" && $Email !=""){ $id = $_REQUEST["Picolo4"]; $Nom = $_REQUEST["Picolo1"]; $Prenom = $_REQUEST["Picolo2"]; $Email = $_REQUEST["Picolo3"]; $enregistrer= "Insert INTO client(Client_nom,Client_prenom,Client_email) VALUES('$Nom','$Prenom','$Email')"; mysqli_query($link,$enregistrer); } } ?> <?php $link=Mysqli_connect($host,$login,$pass,$dbname); $un = 1; if(isset($_POST["bouton11"])){ $choix = $_POST["$un"]; $link = mysqli_connect($host,$login,$pass,$dbname); $enregistrer= "INSERT INTO questionnaire(Choix) VALUES('$choix')"; mysqli_query($link,$enregistrer); } ?> 可能无法按预期使用某些代理配置的某处。因此,如果您从客户端进行某种代理,并且可以在没有代理的情况下以某种方式直接进行测试,那么可能值得探索。