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

use*_*915 5 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) {
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

我尝试对X509TrustManager使用以下代码:

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

然后,我不知道如何创建TrustManager。如何使用Javascript(Rhino 1.6版本7 2008 01 02)执行此操作?

use*_*915 5

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

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

    obj = { getAcceptedIssuers : function() { return null; }, checkClientTrusted: function() { return; }, checkServerTrusted: function() { return; } };
var o = new JavaAdapter(javax.net.ssl.X509TrustManager, obj);
var oo = new Array();
oo.push(o);
Run Code Online (Sandbox Code Playgroud)

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

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

希望这对处于相同情况的人有所帮助。