Hello,

Can anyone explain what is going wrong with the following scenario?

Using NSPR 4.8, NSS 3.12.6, JSS 4.3.1 with JDK 1.6_21 on Windows XP
Professional SP 3.  FIPS mode is enabled.

I'm trying to open an LDAP connection to an LDAP server (Apache
Directory Server) running locally on the same system.  Both SSL
contexts (server and client) are configured to use the KeyManager
(PKCS11 KeyStore), TrustManager and SecureRandom obtained from the
SunPKCS11-NSS provider.

I have enabled the debug logging for the TLS handshake and I can see
that both sides are using the same certificate for identification and
that this certificate as well as the appropriate CA certificates are
being found in the NSS database.

When executing the code with FIPS mode disabled, the handshake is
successful.  However, with FIPS mode enabled, the following stacktrace
is produced:

2010-07-27 08:51:02,154;48156;ERROR;ds.DsServiceImplLiveTest;
(main);Client:
javax.net.ssl.SSLException: java.security.ProviderException: Could not
generate premaster secret
        at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:
190)
        at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:
1623)
        at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:
1586)
        at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:
1569)
        at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:
1154)
        at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:
1131)
        at
com.sun.jndi.ldap.ext.StartTlsResponseImpl.startHandshake(StartTlsResponseImpl.java:
344)
        at
com.sun.jndi.ldap.ext.StartTlsResponseImpl.negotiate(StartTlsResponseImpl.java:
208)
        at
com.polycom.rm.ds.DsServiceImplLiveTest.testMutualCertificateExchange(DsServiceImplLiveTest.java:
765)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at
org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:
99)
        at
org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:
81)
        at
org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:
34)
        at
org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:
75)
        at
org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:
45)
        at
org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:
71)
        at
org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:
35)
        at org.junit.internal.runners.TestClassRunner
$1.runUnprotected(TestClassRunner.java:42)
        at
org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:
34)
        at
org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:
52)
        at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:
46)
        at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
38)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
467)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
683)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
390)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
197)
Caused by: java.security.ProviderException: Could not generate
premaster secret
        at
sun.security.pkcs11.P11TlsRsaPremasterSecretGenerator.engineGenerateKey(P11TlsRsaPremasterSecretGenerator.java:
87)
        at javax.crypto.KeyGenerator.generateKey(DashoA13*..)
        at
com.sun.net.ssl.internal.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:
91)
        at
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:
673)
        at
com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:
230)
        at
com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:
529)
        at
com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:
465)
        at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:
884)
        at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:
1120)
        at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:
1147)
        ... 24 more
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception:
CKR_ATTRIBUTE_VALUE_INVALID
        at sun.security.pkcs11.wrapper.PKCS11.C_GenerateKey(Native Method)
        at
sun.security.pkcs11.P11TlsRsaPremasterSecretGenerator.engineGenerateKey(P11TlsRsaPremasterSecretGenerator.java:
81)
        ... 33 more
2010-07-27 08:51:02,154;48156;WARN;ldap.LdapServer$LdapProtocolHandler;
(pool-2-thread-3);[/10.33.40.39:1437] Unexpected exception forcing
session to close: sending disconnect notice to client.
javax.net.ssl.SSLHandshakeException: SSL handshake failed.
        at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:
416)
        at
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:
299)
        at org.apache.mina.common.support.AbstractIoFilterChain.access
$1100(AbstractIoFilterChain.java:53)
        at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl
$1.messageReceived(AbstractIoFilterChain.java:648)
        at org.apache.mina.common.support.AbstractIoFilterChain
$HeadFilter.messageReceived(AbstractIoFilterChain.java:499)
        at
org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:
299)
        at
org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(AbstractIoFilterChain.java:
293)
        at
org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:
228)
        at
org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:
198)
        at org.apache.mina.transport.socket.nio.SocketIoProcessor.access
$400(SocketIoProcessor.java:45)
        at org.apache.mina.transport.socket.nio.SocketIoProcessor
$Worker.run(SocketIoProcessor.java:485)
        at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:
51)
        at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: javax.net.ssl.SSLException: Received fatal alert:
internal_error
        at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:
190)
        at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:
1401)
        at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:
1369)
        at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.recvAlert(SSLEngineImpl.java:
1535)
        at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:
995)
        at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:
815)
        at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:
691)
        at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:607)
        at org.apache.mina.filter.support.SSLHandler.unwrap0(SSLHandler.java:
657)
        at
org.apache.mina.filter.support.SSLHandler.unwrapHandshake(SSLHandler.java:
613)
        at
org.apache.mina.filter.support.SSLHandler.handshake(SSLHandler.java:
493)
        at
org.apache.mina.filter.support.SSLHandler.messageReceived(SSLHandler.java:
306)
        at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:
392)
        ... 14 more
-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to