Здравствуйте все. Не так давно я спрашивал на форуме про кроссдоменные файлы политики. Теперь возникла необходимость реализовать защищенное соединение межу flash и сервером (https).
Сертификат выдан недавно, поэтому сразу оговорюсь: он не просрочен.
Использую среду flashdevelop. Я скачал as3crypto.swc подключил ее как библиотеку.
Написал код, выполняющий нужные мне действия:

Код AS3:
field = new TextField();
field.text = "test - https\n";
field.x = 10;
field.y = 10;
field.width = 780;
field.height = 580;
field.borderColor = 0x666666;
field.border = true;
addChild(field);
Security.loadPolicyFile("xmlsocket://ip:843");
// https
tlsSock = new TLSSocket();
tlsSock.connect("test.ru", 443);
//tlsSock.addEventListener(Event.
tlsSock.addEventListener(Event.CONNECT, function(success:Event):void {
field.appendText("connected: " + tlsSock.connected.toString() + "\n");
if(tlsSock.connected) {
var request:String;
request = "GET /robots.txt HTTP/1.1\n";
request += "Host: test.ru\n";
request += "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2\n";
request += "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\n";
request += "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\n";
request += "Accept-Encoding: gzip, deflate\n";
request += "Connection: keep-alive\n";
request += "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\n\n";
tlsSock.writeUTFBytes( request );
tlsSock.flush();
field.appendText( "request has been sent\n" );
}
else
{
field.appendText("Can't connect to server!");
}
});
tlsSock.addEventListener(ProgressEvent.SOCKET_DATA, function(e:*):void {
var s:String = tlsSock.readUTFBytes(tlsSock.bytesAvailable);
field.appendText("Response from test.ru: " + s.length + " characters\n");
field.appendText(s + "\n");
});
tlsSock.addEventListener(Event.CLOSE, function(e:Event):void { field.appendText("Connection close\n"); } );
Если запускать из среды, то все работает, а вот если из браузера, то флешка загружается, соединение устанавливается, запрос отправляется, но ответ не приходит.
Через некоторое время соединение закрывается. Никаких ошибок при этом нет.
Если запускать из среды, то в дебаге пишет:

Код:
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
I DONT KNOW HOW TO HANDLE DER stuff of TYPE 22
GOT ALERT! type=0
Причем эти ошибки лезут когда я пытаюсь подключиться к серверу.
В логах flash странные предупреждения:

Код:
Предупреждение: В файле политики от xmlsocket://test.ru:843 обнаружено secure="true", но узел test.ru, по видимому, не является локальным компьютером. Это может быть небезопасно. Дополнительные сведения см. на веб-сайте http://www.adobe.com/go/strict_policy_files_ru.
Предупреждение: В файле политики от xmlsocket://test.ru:843 обнаружено secure="true", но узел test.ru, по видимому, не является локальным компьютером. Это может быть небезопасно. Дополнительные сведения см. на веб-сайте http://www.adobe.com/go/strict_policy_files_ru.
Предупреждение: Недействительный тег <allow-http-request-headers-from> для домена "*" в файле политики в папке xmlsocket://test.ru:843 игнорируется
хотя файл политик, который отдается выглядит так:

Код:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only" />
<allow-access-from domain="*" to-ports="*" secure="false" />
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
</cross-domain-policy>
В нем secure="false";
В чем проблема? где руки скривились?
Добавлено через 7 часов 31 минуту
блин, 52 просмотра и никто ничего не может сказать?