веб-сервисы Amazon — haxe (php) https call: stream_socket_client () Сертификат пира CN не соответствует ожидаемому CN

Я использую Http-класс haxe (скомпилированный в php) для отправки request() через https для AWS. Вот минимальный пример использования библиотеки haxe-aws (https://github.com/Blank101/haxe-aws):

var iamconf = new IAMConfig('newbucket.s3-eu-central-1.amazonaws.com', accessKey, secretKey, 'eu-central-1', 's3');
var sig4 = new Sig4Http('https://newbucket.s3-eu-central-1.amazonaws.com/', iamconf);
sig4.applySigning(true);
sig4.setPostData('<CreateBucketConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><LocationConstraint>eu-central-1</LocationConstraint></CreateBucketConfiguration>');
sig4.request(true);

Независимо от того, какую службу / конечную точку я использую, ответ всегда:

stream_socket_client(): Peer certificate CN=`*.s3.eu-central-1.amazonaws.com' did not match expected CN=`54.231.192.50' (errno: 2) in [...]lib\sys\net\Socket.class.php at line #34

Запросы на работу http. Есть идеи?

Редактировать:
Ответственная часть кода, почему для подключения используется IP-адрес, а не имя:

if(!php_Boot::$skip_constructor) {
if(_hx_deref(new EReg("^(\\d{1,3}\\.){3}\\d{1,3}\$", ""))->match($name)) {
$this->_ip = $name;
} else {
$this->_ip = gethostbyname($name);
if($this->_ip === $name) {
$this->ip = 0;
return;
}
}
}

4

Решение

Как указано здесь https://groups.google.com/forum/#!msg/haxelang/JMSBpF2sOi0/QpoNEjk9EQAJ и здесь http://php.net/manual/en/migration56.openssl.php Расширение openssl в PHP 5.6 использует одноранговую проверку по умолчанию. Следовательно, переключение обратно на PHP 5.5 — это обходной путь, потому что здесь запрещена проверка пиров. Однако он по-прежнему использует IP-адрес вместо имени хоста и, следовательно, не решает суть проблемы.

1

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

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

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