Hello, Am trying to do POC on CSFLE using Java application. Where am trying to write some data into MongoDB / Reading the same by Encrypting few fields .
When am using KMSProviders as local and keeping my master key file in my local working as expected , Fields are getting encrypted properly.
When am using the KMIP based KMS Providers (Particularly with Hasicorp vault) . Am getting exception while connecting to Vault .
private ClientEncryption createKMIPncryptionClient() {
MongoClientSettings kvmcs = MongoClientSettings.builder().applyConnectionString(CONNECTION_STR).build();
ClientEncryptionSettings ces = ClientEncryptionSettings.builder()
.keyVaultMongoClientSettings(kvmcs)
.keyVaultNamespace(VAULT_NS.getFullName())
.kmsProviders(kmipKmsProviders)
.build();
System.out.println("=> Creating KMIP encryption client.");
return ClientEncryptions.create(ces);
}
private Map<String, Map<String, Object>> generateKmipKmsProviders(byte[] masterKey) {
System.out.println("=> Creating KMIP Key Management System using the master key.");
Map<String, Map<String, Object>> kmsProviders = new HashMap<String, Map<String, Object>>();
Map<String, Object> providerDetails = new HashMap<>();
providerDetails.put("endpoint", "localhost:8200");
kmsProviders.put(KMIP, providerDetails);
return kmsProviders;
Here am using the endpoint as local (as i have hashicorp vault running in my local machine in DEV mode).
while running the application , I haven’t passed any JVM parameters . Below is the exception am getting.
Exception in thread "main" com.mongodb.MongoClientException: Exception in encryption library: Unrecognized SSL message, plaintext connection?
at com.mongodb.client.internal.Crypt.wrapInClientException(Crypt.java:363)
at com.mongodb.client.internal.Crypt.decryptKeys(Crypt.java:344)
at com.mongodb.client.internal.Crypt.executeStateMachine(Crypt.java:286)
at com.mongodb.client.internal.Crypt.createDataKey(Crypt.java:174)
at com.mongodb.client.internal.ClientEncryptionImpl.createDataKey(ClientEncryptionImpl.java:93)
at csfle.ClientSideFieldLevelEncryption.readOrCreateDEKUsingKMIP(ClientSideFieldLevelEncryption.java:139)
at csfle.ClientSideFieldLevelEncryption.demo(ClientSideFieldLevelEncryption.java:75)
at csfle.ClientSideFieldLevelEncryption.main(ClientSideFieldLevelEncryption.java:45)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710)
at sun.security.ssl.InputRecord.read(InputRecord.java:527)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:757)
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123)
at java.io.OutputStream.write(OutputStream.java:75)
at com.mongodb.client.internal.KeyManagementService.stream(KeyManagementService.java:75)
at com.mongodb.client.internal.Crypt.decryptKey(Crypt.java:349)
at com.mongodb.client.internal.Crypt.decryptKeys(Crypt.java:339)
... 6 more
