在Javascript(Rhino引擎)中实现自己的TrustManager

时间:2015-08-11 05:12:41

标签: javascript java rhino

我正在尝试在Javascript中实现我自己的TrustManager,但我不知道如何实现它。

在Java中,我有以下内容:

    TrustManager[] trustAllCerts = new TrustManager[]{
    new X509TrustManager() {
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return null;
        }
        public void checkClientTrusted(
            java.security.cert.X509Certificate[] certs, String authType) {
        }
        public void checkServerTrusted(
            java.security.cert.X509Certificate[] certs, String authType) {
        }
    }
};

我尝试将以下内容用于X509TrustManager:

js> obj = { getAcceptedIssuers : function() { return null; }, checkClientTrusted: function() { }, checkServerTrusted: function() { } }
[object Object]
js> x509tm = new javax.net.ssl.X509TrustManager(obj)
adapter1@2eee9593
js>

然后我不知道如何创建TrustManager。如何在Javascript(Rhino 1.6发布7 2008 01 02)中执行此操作?

2 个答案:

答案 0 :(得分:3)

经过几个小时,我终于成功实现了它。

以下是与上述Java部分对应的代码:

var sc = javax.net.ssl.SSLContext.getInstance("SSL");
    sc.init(null, oo, new java.security.SecureRandom());
    javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

然后使用它,一切都变得简单:

{{1}}

希望这会帮助处于相同情况的人。

答案 1 :(得分:0)

扩展user2360915的答案,在Rhino中扩展类的另一种方法是使用以下格式:

new ClassType({NewFunction:function(){}})

例如:

var HNV = new javax.net.ssl.HostnameVerifier({ verify:function(hostname,session){return true;} });

这与user2360915的初始方法略有不同(尽管需要相同的Array解决方案才能工作):

var ExtendedTrustManager = new javax.net.ssl.X509TrustManager({accepted:null,checkClientTrusted:function(xcs, string){},checkServerTrusted:function(xcs, string){this.accepted = xcs;},getAcceptedIssuers:function(){return this.accepted;}});

var TMArray = new Array();

TMArray.push(ExtendedTrustManager);