1

我已经尽我所能搜索了这个论坛,但没有找到合理的答案,谷歌也没有帮助。

我有一个使用 AMFPHP over HTTPS (Flex RemoteObject) 的 FLEX 3 应用程序。如果浏览器客户端 SSL 证书不是我的服务器提供的证书,我想阻止客户端发出任何 HTTPS 请求,从而使 Charles、Burp 等更难以通过代理读取进入服务器的数据联系。

当有人使用其中一个代理服务器时,会出现证书错误,即 Charles 向浏览器提供自己的证书,并作为普通客户端与服务器建立 HTTPS 连接,因此在服务器端没有区别。

如果我的证书是客户端使用的证书,是否有任何方法只允许连接?

4

2 回答 2

2

使用 SecureSockets(需要升级到 SDK 4.6)我能够检查浏览器使用的 SSL 证书的有效性。

默认行为是任何不正确的证书(类似于浏览器证书警告)都会导致 SecureSockets 失败。这使得使用 Adob​​e 文档中的示例代码创建检查非常容易:

private var secureSocket:SecureSocket = new SecureSocket();

    public function SecureSocketExample()
    {
        secureSocket.addEventListener( Event.CONNECT, onConnect )
        secureSocket.addEventListener( IOErrorEvent.IO_ERROR, onError );

        try
        {
            secureSocket.connect( "ip address here", 443 );
        }
        catch ( error:Error )
        {
            trace ( error.toString() );
        }
    }

文档在这里

将此添加到 creationComplete 侦听器足以确保用户没有遵循不安全的证书或中间人。应用程序的其余通信可以通过“正常”SSL AMF 通道进行。

于 2013-01-08T15:07:39.233 回答
1

一种通用方法可能是使用严格的传输安全性

于 2013-01-07T21:18:10.917 回答