Сбой связи MONGODB TLS / SSL в наборе реплик с 3 узлами, развернутыми с помощью Docker-Compose

#mongodb #ssl #docker-compose #tls1.2 #replicaset

#mongodb #ssl #docker-compose #tls1.2 #набор реплик

Вопрос:

Поэтому я не могу инициировать набор реплик для работы с TLS, когда пытаюсь развернуть его с помощью docker compose на моем локальном компьютере. Когда я перехожу к mono.mongors1, я пытаюсь сделать

     rs.initiate({
   _id : "mongors1",
 members:
  [
     { _id : 0, host : "mongo.mongors1 " , priority : 1},
     { _id : 1, host : "mongo-2.mongors1" , priority : 0},
     { _id : 2, host : "mongo-3.mongors1" , priority : 0}
   ]
    })
  

работает, но я продолжаю получать сообщение об ошибке, что не удалось выполнить рукопожатие SSL. Ошибка:

 SSL Handshake failed. The server is configured to only allow SSL connections
  

Когда я исключаю следующее из файла Docker-Compose

  `    - --tlsCertificateKeyFile=/security/certs_thorben/mongodb_node_1.pem
      - --tlsCAFile=/security/certs_thorben/ca.pem  
      - --tlsMode
      - requireTLS`
  

это работает так, что ошибка исходит из сертификата TLs. Я работаю с этим скриптом

     openssl req -nodes -out ca.pem -new -x509 -keyout ca.key
# Create Certificate Requests
openssl req -nodes -newkey rsa:4096 -sha256 -keyout mongodb_node_1.key -out mongodb_node_1.csr
openssl req -nodes -newkey rsa:4096 -sha256 -keyout mongodb_node_2.key -out mongodb_node_2.csr
openssl req -nodes -newkey rsa:4096 -sha256 -keyout mongodb_node_3.key -out mongodb_node_3.csr

# Signiere Certifikats
openssl x509 -req -in mongodb_node_1.csr -CA ca.pem -CAkey ca.key -set_serial 00 -out mongodb_node_1.crt
openssl x509 -req -in mongodb_node_2.csr -CA ca.pem -CAkey ca.key -set_serial 00 -out mongodb_node_2.crt
openssl x509 -req -in mongodb_node_3.csr -CA ca.pem -CAkey ca.key -set_serial 00 -out mongodb_node_3.crt

# one pem file at the end
cat mongodb_node_1.key mongodb_node_1.crt > mongodb_node_1.pem
cat mongodb_node_2.key mongodb_node_2.crt > mongodb_node_2.pem
cat mongodb_node_3.key mongodb_node_3.crt > mongodb_node_3.pem
  

Я определяю общее имя следующим образом: «*.mongors1»
Я думаю, это должно сработать, потому что я создаю псевдоним хоста в файле docker-compose для каждого узла с «.mongors1» в конце.

Вот как выглядит мой файл docker Compose.

     mongors1n1:
    container_name: mongors1n1
    networks:
      default:
          aliases:
            - mongo.mongors1  
    image: mongo_cluster:latest
    command: 
      - --shardsvr
      - --replSet
      - mongors1 
      - --dbpath 
      - /data/db
      # - --keyFile=/mongodb_keyfile
      - --tlsCertificateKeyFile=/security/certs_thorben/mongodb_node_1.pem
      - --tlsCAFile=/security/certs_thorben/ca.pem  
      - --tlsMode
      - requireTLS
      - --port
      - "27017"
      - --bind_ip_all
    ports: 
      - 27017:27017
    expose:
      - "27017"
    volumes:
      - ./mounted/shards/primary1/db:/data/db
    depends_on:
      - mongors1n2
      - mongors1n3
    environment:
      - PRIMARY_SHARD=1
  mongors1n2:
    container_name: mongors1n2
    networks:
      default:
          aliases:
            - mongo-2.mongors1  
    image: mongo_cluster:latest
    command: 
      - --shardsvr
      - --replSet
      - mongors1 
      - --dbpath 
      - /data/db
      # - --keyFile=/mongodb_keyfile
      - --tlsCertificateKeyFile=/security/certs_thorben/mongodb_node_1.pem
      - --tlsCAFile=/security/certs_thorben/ca.pem
      - --tlsMode
      - requireTLS
      - --port
      - "27017"
      - --bind_ip_all
    ports:
      - 27027:27017
    expose:
      - "27017"
    volumes:
      - ./mounted/shards/secondary1/db:/data/db
  mongors1n3:
    container_name: mongors1n3
    networks:
      default:
          aliases:
            - mongo-3.mongors1  
    image: mongo_cluster:latest
    command: 
      - --shardsvr
      - --replSet
      - mongors1 
      - --dbpath 
      - /data/db
      # - --keyFile=/mongodb_keyfile
      - --tlsCertificateKeyFile=/security/certs_thorben/mongodb_node_1.pem
      - --tlsCAFile=/security/certs_thorben/ca.pem
      - --tlsMode
      - requireTLS
      - --port
      - "27017"
      - --bind_ip_all
    ports:
      - 27037:27017
    expose:
      - "27017"
    volumes:
      - ./mounted/shards/secondary2/db:/data/db
  

У вас, ребята, есть какие-либо идеи, как заставить шифрование TLS работать на локальном хосте с набором реплик. Или есть какие-либо идеи, что я здесь делаю не так?
Спасибо