标签: javapolicy

使用https-URLS设置哪个权限以避免安全管理器出错?

在为客户提供的软件中,我们必须阅读给定的URL来解析其内容.此外,客户需要激活Tomcat-Security-Manager以让Java-Policies控制程序的功能.

现在,通过读取URL,发生异常"javax.net.ssl.SSLKeyException:RSA premaster secret error",但仅在某些条件下:

  • 如果URL是HTTPS但不是HTTP
  • 如果安全管理器被激活,则不会被激活,或者如果在全局授权块中,则设置了AllPermission
  • 仅限Java 6,而不是Java 7(客户现在需要Java 6)
  • 仅限Tomcat6,而不是Tomcat 7(客户目前需要Tomcat 6)

安全违规发生在Java代码中的某个地方,限制在我们的代码库中的AllPermission不会阻止错误.

那么,有人有一个想法,即为Java 6设置哪个权限,以便它可以处理HTTPS?

其他信息:它在一个tomcat中运行,在一个带有OpenJDK的Debian-Linux上运行.

编辑:我在变量JAVA_OPTS中向Tomcats/etc/default/tomcat6添加了Java-Param"-Djava.security.debug = access,failure".但在日志中我没有其他消息.在触发它们之前,代码可能会询问权限吗?

EDIT2:我找到了正确的位置并获得了完整的堆栈跟踪(删除了特定的客户部分):

javax.net.ssl.SSLKeyException: RSA premaster secret error

            at [...]
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
            at javax.security.auth.Subject.doAsPrivileged(Subject.java:537)
            at java.lang.Thread.run(Thread.java:701)
    Caused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyGenerator not available
            at javax.crypto.KeyGenerator.<init>(KeyGenerator.java:141)
            at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:191)
            ... 14 more
Run Code Online (Sandbox Code Playgroud)

EDIT3:到目前为止,我假设Java类URL用于访问资源的内容.但这是不真实的.它使用Grails-Code将Groovy-URL-object与getText()方法一起使用:

new URL(params.url).text
Run Code Online (Sandbox Code Playgroud)

错误发生在这一行.这是Grails-version 2.2.4.

java securitymanager javapolicy

13
推荐指数
2
解决办法
2622
查看次数

标签 统计

java ×1

javapolicy ×1

securitymanager ×1