NSS on fips mode supports TLS only. SSL is not supported. On Friday, 4 September 2015 00:38:58 UTC+5:30, Ernie Kovak wrote: > Using NSS 3.20 built on Windows, using it with Java 8 for SSL connections > from thick client to FIPS-enabled server. It fails to establish a connection, > generating the following exception: > > Caused by: javax.net.ssl.SSLKeyException: RSA premaster secret error > at > sun.security.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:86) > at > sun.security.ssl.ClientHandshaker.serverHelloDone(ClientHandshaker.java:906) > > Caused by: java.security.NoSuchAlgorithmException: no such algorithm: > SunTls12RsaPremasterSecret for provider SunPKCS11-nss-fips > at sun.security.jca.GetInstance.getService(GetInstance.java:101) > at javax.crypto.JceSecurity.getInstance(JceSecurity.java:109) > at javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:303) > at sun.security.ssl.JsseJce.getKeyGenerator(JsseJce.java:274) > at > sun.security.ssl.RSAClientKeyExchange.<init>(RSAClientKeyExchange.java:77) > > The error occurs after client and server agree to use the > TLS_RSA_WITH_AES_128_CBC_SHA256 cipher. The client can't encrypt the > pre-master-secret. > > The list of services and algorithms for the provider does not include the > SunTls12RsaPremasterSecret: > > DEBUG - NSSConfigurationHandler: NSS Provider successfully instantiated > DEBUG - AFTER loading the NSS provider > DEBUG - Provider: SunPKCS11-nss-fips > Service: Mac HmacSHA1 > Service: SecretKeyFactory DES > Service: MessageDigest SHA-384 > Service: Signature SHA256withECDSA > Service: KeyPairGenerator DSA > Service: KeyFactory EC > Service: KeyFactory DSA > Service: KeyPairGenerator DH > Service: MessageDigest MD5 > Service: KeyGenerator SunTlsPrf > Service: KeyFactory DH > Service: Cipher AES/ECB/PKCS5Padding > Service: Signature MD2withRSA > Service: AlgorithmParameters EC > Service: Signature SHA224withECDSA > Service: Cipher DES/CBC/PKCS5Padding > Service: Cipher DESede/CBC/NoPadding > Service: Signature SHA1withRSA > Service: SecretKeyFactory AES > Service: MessageDigest SHA-256 > Service: Cipher AES/ECB/NoPadding > Service: Mac HmacMD5 > Service: Cipher AES_128/ECB/NoPadding > Service: MessageDigest MD2 > Service: Signature SHA1withECDSA > Service: Signature SHA512withRSA > Service: KeyPairGenerator EC > Service: Cipher DES/ECB/NoPadding > Service: MessageDigest SHA-512 > Service: Signature RawDSA > Service: SecretKeyFactory ARCFOUR > Service: Signature SHA384withRSA > Service: MessageDigest SHA1 > Service: Mac HmacSHA256 > Service: KeyGenerator DES > Service: Cipher DESede/ECB/NoPadding > Service: KeyAgreement DH > Service: Cipher DES/ECB/PKCS5Padding > Service: Mac HmacSHA512 > Service: Mac HmacSHA224 > Service: Signature SHA256withRSA > Service: Signature NONEwithECDSA > Service: Cipher RSA/ECB/NoPadding > Service: Cipher AES_256/CBC/NoPadding > Service: Cipher AES/CBC/PKCS5Padding > Service: Cipher DES/CBC/NoPadding > Service: KeyGenerator SunTlsKeyMaterial > Service: Cipher ARCFOUR > Service: KeyGenerator DESede > Service: MessageDigest SHA-224 > Service: Cipher AES/CBC/NoPadding > Service: Signature SHA384withECDSA > Service: Cipher DESede/CBC/PKCS5Padding > Service: KeyAgreement ECDH > Service: Cipher AES_192/ECB/NoPadding > Service: Cipher RSA/ECB/PKCS1Padding > Service: Signature SHA512withECDSA > Service: Cipher AES_128/CBC/NoPadding > Service: KeyGenerator SunTlsMasterSecret <<<<<<<<<<< > Service: Signature MD5withRSA > Service: Mac HmacSHA384 > Service: Cipher AES_256/ECB/NoPadding > Service: SecretKeyFactory DESede > Service: KeyPairGenerator RSA > Service: Signature SHA224withRSA > Service: Mac SslMacSHA1 > Service: KeyFactory RSA > Service: KeyGenerator ARCFOUR > Service: Cipher AES/CTR/NoPadding > Service: Signature DSA > Service: Cipher AES_192/CBC/NoPadding > Service: KeyGenerator SunTlsRsaPremasterSecret <<<<<<<<<<< > Service: Cipher DESede/ECB/PKCS5Padding > Service: KeyGenerator AES > Service: Mac SslMacMD5 > Service: SecureRandom PKCS11 > Service: KeyStore PKCS11 > > Code that instantiates the Provider: > > InputStream nssConfigStream = new > ByteArrayInputStream(nssConfig.getBytes(StandardCharsets.UTF_8)); > Class<Provider> clas = (Class<Provider>) > Class.forName("sun.security.pkcs11.SunPKCS11"); > Constructor<Provider> constructor = clas.getConstructor(new > Class[]{InputStream.class}); > Provider provider = (Provider)constructor.newInstance(nssConfigStream); > > > Is there some configuration item, etc., that I'm missing? > > Thanks! > Ernie
-- dev-tech-crypto mailing list dev-tech-crypto@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-tech-crypto