当我使用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
请求流程:
答案 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客户端中使用的服务器名称。
尝试一个问题排查步骤:更新curl
或compile it yourself from the sources并重试。首先,某些curl
版本(例如MacOS)据称不会为-k
/ --insecure
发送SNI。
如果这是你遇到的问题,你无法取代curl
,there’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);
}
?>
可能无法按预期使用某些代理配置的某处。因此,如果您从客户端进行某种代理,并且可以在没有代理的情况下以某种方式直接进行测试,那么可能值得探索。