2015-02-04 1 views
0

오류 코드 :libcurl에 :: SSL은 : 인증서 주체 이름 '일반 이름 (예를 들면, 당신의 이름)'대상 호스트 이름과 일치 ...하지만하지 않는 CN 및 대상 이름 그래서 첫 경기

string(345) " 
404 - Not Found 

" 
0 
SSL: certificate subject name 'Common Name (eg, YOUR name)' does not match target host name 'www.example.com' 

이것은 다음 테스트 스크립트를 사용하여 발견되었습니다.

<?php 

$request=<<<EOT 
EOT; 

$c = curl_init("https://www.example.com"); 

curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($c, CURLOPT_POST, "POST"); 
curl_setopt($c, CURLOPT_POSTFIELDS, $request); 
curl_setopt ($c, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt ($c, CURLOPT_SSL_VERIFYHOST, 2); 

ob_start(); 
curl_exec($c); 
$response = ob_get_contents(); 
ob_end_clean(); 
$curlErrorCode = curl_errno($c); 
$error = curl_error($c); 

var_dump($response); 
echo "<br>"; 
echo $curlErrorCode."<br>"; 
echo $error."<br>"; 

curl_close ($c); 
?> 

실제 사이트 이름이 변경되었지만 인증서가 두 번 및 세 번 확인되었으며 이름이 일치했습니다. G2

Subject section of SSL CERT 
    CN = www.example.com 
    O = EXAMPLE, INC. 
    L = City 
    S = State 
    C = US 
    SERIALNUMBER = 19xxxxxxxx 
    2.5.x.xx = Private Organization 
    1.3.x.x.x.x.xxx.xx.x.x.x = State 
    1.3.x.x.x.x.xxx.xx.x.x.x = US 

(이 사이트는 우리가 준수에서 지불을 수락하지 않도록 살입니다) 우리의 지불 시스템이 스크립트가 정상적으로 실행이 준수해야하는 경우 - 그것은 Starfield 안전 인증 기관에서 프리미엄 SSL 인증서입니다. 그러나 나는 그것을 명확하게 할 수 없었다. 누구나 왜 그런 생각이 들까?

추가 정보 :이 문제를 해결할 수 있었다

OS = MS Server 2012_R2 
Platform = Hyper-v Virtual Instance (Hyper-v is installed on metal on MS Server 2012_R2) 
Service = IIS 6.2 (build 9200) 
Certificate is installed on IIS and bound to website. 
+0

해결책을 발견. –

답변

1

좋아요. 제 경우에는 컬이나 인증서와 아무 관련이 없습니다.

Google 사이트의 작동 방식은 사용자가 사이트를 방문했지만 적절한 URL을 사용하지 않으면 올바른 URL로 전달됩니다.

이 스크립트는 사이트가 호스팅되는 동일한 상자에서 사이트에 액세스 했으므로 'localhost'에 액세스하려고했기 때문에. 그러면 Google 사이트에서 URL의 오류를 찾아 적절한 'www.example.com'URL로 전달합니다.

URL로 전달 되었기 때문에 결국 스크립트가 전달 된 DNS 주소에 사이트의 외부 IP 주소가 부여되었습니다.

전달 된 후 방화벽 내부에 있었기 때문에 방화벽에서 DNS 리 바인드 오류가 발생했습니다. 따라서 방화벽의 오류 페이지에 스크립트를 설치하십시오.

원래 오류 : 나는 방화벽 다시 'CN = 일반 이름 (예를 들어, 귀하의 이름)'의 기본 증명서에 복귀 한 것을 발견 한 후이 오류는 이해하기 시작

SSL: certificate subject name 'Common Name (eg, YOUR name)' does not match target host name 'www.example.com' 

...

결론적으로이 스크립트는 www.example.com의 인증서가 아닌 Firewall 's Certificate를 사용하고있었습니다!

는 DNS 리 바인딩 오류를 방지하고, 마지막으로 찾을 수있는, 내가 스크립트가 외부 주소로 전달되지 않도록 할 수있었습니다 것을 www.example.com = 127.0.0.1

을 반영하기 위해 호스팅 서버의 DNS 항목을 업데이트 문제를 해결하려면 www.example.com

설정 정보에 대한 올바른 인증서 :

pfSense Firewall 
X-Cart eCommerce platform w/ X-Payments 
Windows Server 2012_R2 
IIS 6.2 (build 9200) 
관련 문제