我卡在创建SSLContext时(我想使用它来实例化SSLEngine以通过java-nio处理加密传输):
代码如下
String protocol = "TLSv1.2";
Provider provider = new BouncyCastleProvider();
Security.addProvider(provider);
sslContext = SSLContext.getInstance(protocol,provider.getName());
抛出以下异常:
Exception in thread "main" java.lang.RuntimeException: java.security.NoSuchAlgorithmException: no such algorithm: SSL for provider BC
at org.bitmash.network.tcp.ssl.SslTransferFactory.<init>(SslTransferFactory.java:43)
at org.bitmash.network.http.HttpsServer.<init>(HttpsServer.java:19)
我将Bouncy Castle的当前提供程序包'bcprov-jdk15on-150.jar'(从这里获得)附加到应用程序的类路径以及其引导类路径(通过VM选项-Xbootclasspath/p),但两者都没有解决问题。我还尝试了不同的protocol
值(即'SSL'和'TLSv1'),但没有任何效果。
此外,我在这里和这里找到了类似问题的人。但与他们相反,我针对并使用Java 7(或更高版本),但我仍然有这个问题。总的来说,使用Bouncy Castle这种方式是可行的吗,还是我必须重写我的协议,使用它们各自的API而不是通过SSLEngine使用oracle的NIO(这是我现在正在使用的方法)?
非常感谢您在这里的任何帮助。