我有以下代码:
SSLContext sslContext = SSLContext.getInstance("TLS", BouncyCastleProvider.PROVIDER_NAME);
sslContext.init(keyManagerFactory.getKeyManagers(), null, null);
SSLEngine sslEngine = sslContext.createSSLEngine();
String[] suites = { "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" };
sslEngine.setEnabledCipherSuites(suites);谢谢。
编辑:我发现我应该使用需要SecureRandom对象的BouncyCastleJsseProvider,如下所示:
sslContext.init(keyManagerFactory.getKeyManagers(), null, new SecureRandom());使用新提供程序之后,我将在代码库中获得以下堆栈跟踪,正如我所理解的,它应该像以前一样工作:
Aug 17, 2017 8:47:32 PM org.bouncycastle.jsse.provider.ProvTlsServer notifyAlertRaised
INFO: Server raised fatal(2) handshake_failure(40) alert: Failed to read record
org.bouncycastle.tls.TlsFatalAlert: handshake_failure(40)
at org.bouncycastle.tls.AbstractTlsServer.getSelectedCipherSuite(Unknown Source)
at org.bouncycastle.jsse.provider.ProvTlsServer.getSelectedCipherSuite(Unknown Source)
at org.bouncycastle.tls.TlsServerProtocol.sendServerHelloMessage(Unknown Source)
at org.bouncycastle.tls.TlsServerProtocol.handleHandshakeMessage(Unknown Source)
at org.bouncycastle.tls.TlsProtocol.processHandshakeQueue(Unknown Source)
at org.bouncycastle.tls.TlsProtocol.processRecord(Unknown Source)
at org.bouncycastle.tls.RecordStream.readRecord(Unknown Source)
at org.bouncycastle.tls.TlsProtocol.safeReadRecord(Unknown Source)
at org.bouncycastle.tls.TlsProtocol.offerInput(Unknown Source)
at org.bouncycastle.jsse.provider.ProvSSLEngine.unwrap(Unknown Source)发布于 2017-09-28 16:43:52
我做了下面的工作,以使它发挥作用。
BouncyCastleProvider和BouncyCastleJsseProvider
Security.addProvider(新BouncyCastleProvider());Security.addProvider(新BouncyCastleJsseProvider());SSLContext创建BouncyCastleJsseProvider
SSLContext sslContext = SSLContext.getInstance("TLS",BouncyCastleJsseProvider.PROVIDER_NAME);sslContext的SecureRandom实例初始化BouncyCastleProvider
sslContext.init( keyManagers,trustManagers,SecureRandom.getInstance(“默认”,BouncyCastleProvider.PROVIDER_NAME));KeyManagerFactory和BouncyCastleJsseProvider和PKIX算法来创建
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("PKIX",BouncyCastleJsseProvider.PROVIDER_NAME);https://stackoverflow.com/questions/45726336
复制相似问题