#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 работать на локальном хосте с набором реплик. Или есть какие-либо идеи, что я здесь делаю не так?
Спасибо