使用RSAL Toolkit的SSL未封装为jar错误

4

我正在运行一个第三方应用程序,当尝试创建与服务器的SSL连接时,出现以下堆栈跟踪:

根异常如下:

Caused by: java.lang.SecurityException: Toolkit not encapsulated by a jar.
    at com.rsa.jcm.f.hq.a(Unknown Source)    
    at com.rsa.jcm.f.jg.b(Unknown Source)
    at com.rsa.crypto.jcm.ModuleLoader.a(Unknown Source)
    at com.rsa.crypto.jcm.ModuleLoader.load(Unknown Source)
    ... 43 more

有人在使用RSA SSL连接时遇到过这种情况吗?我已经在谷歌上搜索了,但没有明显的原因。

这个错误发生在Mac上,我有一个Windows版本的相同应用程序可以正常工作。主要区别是他们在Windows版本中捆绑了JRE,因此我检查了各种安全策略等,但在Windows上的JRE与我的Mac上的JRE之间并没有太大的区别。

完整的堆栈跟踪如下:

Caused by: java.lang.Error: Problem loading module.
    at com.rsa.cryptoj.o.ju.g(Unknown Source)
    at com.rsa.cryptoj.o.ju.c(Unknown Source)
    at com.rsa.cryptoj.o.gd.a(Unknown Source)
    at com.rsa.cryptoj.o.dm.b(Unknown Source)
    at com.rsa.cryptoj.o.dm.<clinit>(Unknown Source)
    at com.rsa.cryptoj.o.me.newInstance(Unknown Source)
    at javax.crypto.Cipher.chooseProvider(Cipher.java:845)
    at javax.crypto.Cipher.init(Cipher.java:1348)
    at sun.security.ssl.CipherBox.<init>(CipherBox.java:175)
    at sun.security.ssl.CipherBox.newCipherBox(CipherBox.java:208)
    at sun.security.ssl.CipherSuite$BulkCipher.newCipher(CipherSuite.java:467)
    at sun.security.ssl.CipherSuite$BulkCipher.isAvailable(CipherSuite.java:507)
    at sun.security.ssl.CipherSuite$BulkCipher.isAvailable(CipherSuite.java:485)
    at sun.security.ssl.CipherSuite.isAvailable(CipherSuite.java:190)
    at sun.security.ssl.SSLContextImpl.getApplicableCipherSuiteList(SSLContextImpl.java:342)
    at sun.security.ssl.SSLContextImpl.getDefaultCipherSuiteList(SSLContextImpl.java:300)
    at sun.security.ssl.SSLSocketImpl.init(SSLSocketImpl.java:576)
    at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:512)
    at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:73)
    at com.somevendor.client.common.spring.remoting.http.e.createSocket(Unknown Source)
    at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
    at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.open(MultiThreadedHttpConnectionManager.java:1361)
    at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
    at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
    at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
    at com.somevendor.client.common.spring.remoting.http.SecureHttpInvokerRequestExecutor.executePostMethod(Unknown Source)
    at org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor.doExecuteRequest(CommonsHttpInvokerRequestExecutor.java:140)
    at org.springframework.remoting.httpinvoker.AbstractHttpInvokerRequestExecutor.executeRequest(AbstractHttpInvokerRequestExecutor.java:136)
    at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:192)
    at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.executeRequest(HttpInvokerClientInterceptor.java:174)
    at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:142)
    ... 7 more
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    ... 39 more
Caused by: java.lang.SecurityException: Toolkit not encapsulated by a jar.
    at com.rsa.jcm.f.hq.a(Unknown Source)
    at com.rsa.jcm.f.jg.b(Unknown Source)
    at com.rsa.crypto.jcm.ModuleLoader.a(Unknown Source)
    at com.rsa.crypto.jcm.ModuleLoader.load(Unknown Source)
    ... 43 more

好的,我解决了这个问题。原来是我执行的jar文件路径中有一个空格,这似乎导致了RSA工具包的崩溃。因此,解决这个问题的方法是确保路径中没有空格(这是在Mac上,我也可以在Linux上复制这个错误)。 - stringy05
可以确认这在Windows XP上发生。 - WLPhoenix
1个回答

0

作为我解决这个问题时的答案(5年前..)。当完全限定路径中存在空格时,就会出现此异常,该路径指向正在执行的jar文件。

所以这样做是可以的:

/Users/stringy05/app/app.jar

但是如果您使用带空格的路径:

/Volumes/Macintosh HD/Users/stringy05/app/app.jar 

然后它失败了。当这最初发生时,我在 /Users/stringy05 中有一个软链接指向另一个硬盘,因此 Java 或操作系统会将链接路径解析为实际路径,从而导致失败。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接