libCURL :: SSL: имя субъекта сертификата ‘Common Name (например, YOUR name)’ не совпадает с именем целевого хоста … но 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);
?>

Фактическое имя сайта было изменено, но я дважды и трижды проверил сертификат и совпадения имен. Это премиальный SSL-сертификат от Центра сертификации Starfield Secure — 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

Чтобы наша платежная система соответствовала требованиям, этот скрипт должен работать корректно (этот сайт не работает, поэтому мы не принимаем платежи из-за несоответствия требованиям). Но я не смог заставить его очиститься. У кого-нибудь есть идея, почему?

Дополнительная информация:

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

Решение

Хорошо, я смог решить эту проблему. В моем случае это не имеет ничего общего с curl или сертификатами.

Наш сайт работает так, как если вы нажали на него, но не используете правильный URL-адрес для сайта, он перенаправит вас на правильный URL-адрес.

Поскольку этот сценарий обращался к сайту из того же ящика, в котором размещен сайт, он пытался получить доступ к «localhost». Какой наш сайт затем обнаружит ошибку URL и перенаправит вас на правильный URL «www.example.com».

Поскольку он переадресовывался на URL-адрес, DNS-адрес, на который в конечном итоге пересылался скрипт, давал ему внешний IP-адрес сайта.

После пересылки на брандмауэре возникла ошибка повторного связывания DNS, поскольку она находилась внутри брандмауэра. Поэтому посадка скрипта на страницу ошибки нашего брандмауэра.

Исходная ошибка:

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

Эта ошибка стала иметь смысл после того, как я обнаружил, что Брандмауэр вернулся к своему Сертификату по умолчанию, который называется «CN = Common Name (например, ВАШЕ имя)» …

Итак, в заключение, сценарий использовал сертификат брандмауэра, а не сертификат www.example.com вообще!

Чтобы исправить проблему, я обновил записи 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)
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]