无法运行setDefaultHostnameVerifier

问题描述 投票:0回答:2

基本上,我尝试在本地数据库的 Lotus Notes Java 代理中执行以下代码,以强制忽略 SSL 证书的主机名不匹配。

HostnameVerifier hv = new HostnameVerifier() {
                    public boolean verify(String urlHostName, SSLSession session) {
                        System.out.println("Warning: URL Host: " + urlHostName + " vs. "
                                + session.getPeerHost());
                        return true;
                    }
                };
HttpsURLConnection.setDefaultHostnameVerifier(hv);

但是,我遇到了一个错误,指出对特定方法的访问被拒绝

java.security.AccessControlException:访问被拒绝 (javax.net.ssl.SSLPermission setHostnameVerifier)位于 java.security.AccessController.throwACE(AccessController.java:100) 在 java.security.AccessController.checkPermission(AccessController.java:174) 在 java.lang.SecurityManager.checkPermission(SecurityManager.java:544) 在 COM.ibm.JEmpower.applet.AppletSecurity.superDotCheckPermission(AppletSecurity.java:1449) 在 COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1617) 在 COM.ibm.JEmpower.applet.AppletSecurity.checkPermission(AppletSecurity.java:1464) 在 javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(HttpsURLConnection.java:40) 在 JavaAgent.NotesMain(JavaAgent.java:45) 处 lotus.domino.AgentBase.runNotes(来源不明)位于 Lotus.domino.NotesThread.run(来源未知)

我已在 java.policy 文件中尝试了以下代码,但错误仍然相同

权限javax.net.ssl.SSLPermission“setHostnameVerifier”;

我在 Eclipse IDE 中尝试了相同的代码并运行它并且运行良好。

java lotus-notes lotus-domino
2个回答
2
投票

在某些情况下,将代码放在外部 jar 文件中似乎可以解决问题。你看过这篇文章吗?它详细介绍了解决此类问题的详细信息。


0
投票

对我来说,问题在于混淆 org.bouncycastle.jcajce.provider 中的类。我所做的是将以下内容添加到我的 proguard.conf 文件中:

-keep class org.bouncycastle.jcajce.provider.** { *; }

© www.soinside.com 2019 - 2024. All rights reserved.