MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Mongodb x.509 'ग्राहक से कोई सत्यापित विषय नाम उपलब्ध नहीं है'

मैंने पाया कि मुझे इस मुद्दे को कैसे हल करना है।

निश्चित रूप से मैंने जावा सुरक्षा के लिए मोंगो प्रमाणपत्र पंजीकृत किया है जैसा कि यहां दिखाया गया है:

sudo keytool -import -alias ca1 -file mongo-CA-cert.crt -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

मैंने निम्नलिखित किया:1) pem फ़ाइल को pkcs12 में कनवर्ट करें

openssl pkcs12 -export -out hikmatuser.pfx -inkey hkshreimuser.key -in hkshreimuser.crt -certfile mongo-CA-cert.crt

2) मैं परीक्षण के लिए निम्नलिखित जावा कोड लिखता हूं और यह ठीक काम करता है:

private SSLContext getSSLContext(String filePath){

        String password = "123456";
        String jvm_certs_path = "/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts";
        String jvm_certs_password = "changeit";

        try{

            KeyStore clientStore = KeyStore.getInstance("PKCS12");
            clientStore.load(new FileInputStream(filePath), password.toCharArray());

            KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            kmf.init(clientStore, password.toCharArray());
            KeyManager[] kms = kmf.getKeyManagers();

            KeyStore trustStore = KeyStore.getInstance("JKS");
            trustStore.load(new FileInputStream(jvm_certs_path), jvm_certs_password.toCharArray());

            TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            tmf.init(trustStore);
            TrustManager[] tms = tmf.getTrustManagers();

            SSLContext sslContext = null;
            sslContext = SSLContext.getInstance("TLS");
            sslContext.init(kms, tms, new SecureRandom());

            return  sslContext;

        }catch (Exception e){
            e.printStackTrace();
        }

        return null;

    }

    public void getMongoClient() {

        String filePath2 = "/home/hikmat/mongodbssl/s2/hikmatuser.pfx";
        String user = "[email protected],CN=xxxx,OU=xxxxxx,O=xxxxxx,L=xxxx,ST=xxxx,C=XX";


        SSLContext sslContext = getSSLContext(filePath2);

        MongoCredential credential = MongoCredential.createMongoX509Credential(user);
        MongoClientOptions options = MongoClientOptions.builder().sslEnabled(true).sslContext(sslContext).build();

        //mongodbserver should be the same name "CN" that you use when you create server cert file
        MongoClient mongoClient = new MongoClient(new ServerAddress("mongodbserver", 27017), credential,options);


        return mongoClient;

    }// end of method



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मैं C# ASP.NET Core API ढांचे के साथ MongoDB ड्राइवर का उपयोग कैसे कर सकता हूं?

  2. क्या लेन-देन मोंगोडब एकत्रीकरण $ मर्ज के साथ काम करेगा?

  3. विजुअल स्टूडियो कोड का उपयोग करके .NET कोर से Nuget रिपॉजिटरी का उपयोग कैसे करें

  4. MongoDB दस्तावेज़ बहुत जल्द समाप्त हो रहे हैं (नेवला)

  5. MongoDB क्रॉस डेटाबेस क्वेरी