首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Javascript (犀牛引擎)中实现自己的TrustManager

在Javascript (犀牛引擎)中实现自己的TrustManager
EN

Stack Overflow用户
提问于 2015-08-11 05:12:40
回答 2查看 762关注 0票数 5

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

在Java中,我有以下内容:

代码语言:javascript
复制
    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中使用以下内容:

代码语言:javascript
复制
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 (Rhino1.6发行版7 200801 02)中做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-11 08:27:29

许多小时后,我终于成功地实现了它。

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

代码语言:javascript
复制
    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);

然后使用它,一切变得容易:

代码语言:javascript
复制
var sc = javax.net.ssl.SSLContext.getInstance("SSL");
    sc.init(null, oo, new java.security.SecureRandom());
    javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

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

票数 5
EN

Stack Overflow用户

发布于 2019-08-03 13:57:37

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

代码语言:javascript
复制
new ClassType({NewFunction:function(){}})

例如:

代码语言:javascript
复制
var HNV = new javax.net.ssl.HostnameVerifier({ verify:function(hostname,session){return true;} });

这产生了与This 2360915略有不同的初始方法(尽管它需要相同的Array解决方案才能工作):

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31933701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档