2017-09-22 9 views
0

Je suis en train de mettre en place un cluster rethinkdb sur TLS. Je vois beaucoup d'exemples et de blogs mais aucun ne décrit un environnement de production. Tous utilisent des certificats auto-signés et déploient sur localhost ou sur des hôtes exposés à Internet.Qu'est-ce que l'erreur OpenSSL 336105606 moyenne pendant la négociation TLS de connexion de cluster rethinkdb

Cependant je veux utiliser un réseau privé en cours d'exécution sur OpenStack. Donc, tous les hôtes (appelés instances sur OpenStack) ont une adresse IP privée. Afin de tester cette configuration, j'ai créé 2 instances (exécutant Ubuntu 16.04 LTS) et installé RethinkDB sur les deux.

Selon this Page RethinkDB Je dois fournir à chaque serveur une clé, un certificat signé et un fichier de certificat CA. Chaque certificat doit spécifier son CN (Common Name) et cela doit être le nom d'hôte ou l'adresse IP de l'hôte. Les IP sont privés, ie (192.168.0. *)

Pour ce faire j'ai créé ma propre CA en utilisant les instructions here. J'ai créé un fichier de clé pour l'hôte A et un pour l'hôte B et je les ai signés avec mes propres CA intermédiaire créé. Vérifié tous les certificats et tout est revenu OK. Les sont correctement signés par la même autorité de certification.

Alors maintenant, j'obtenu une clé privée + certificat public pour l'hôte A avec le CN ensemble à l'adresse IP de l'hôte A et la même chose pour l'hôte B.

J'ai installé les clés, certificats et certificat intermédiaire CA sur la deux serveurs et les a spécifiés dans les fichiers de configuration RethinkDB. Je lie également les ports de cluster aux adresses IP correspondantes. L'utilisateur rethinkdb a accès à tous les fichiers de clé et de certificat.

Les lignes importantes dans l'hôte Un fichier de configuration

initial-password=MY_PASSWORD 
bind-cluster=192.168.0.3 
cluster-tls-key=/etc/ssl/private/rethinkdbA.key.pem 
cluster-tls-cert=/etc/ssl/certs/rethinkdbA.cert.pem  
cluster-tls-ca=/etc/ssl/certs/rethink-ca.pem 

Les lignes importantes dans le fichier hôte B conf

initial-password=auto 
bind-cluster=192.168.0.4 
cluster-tls-key=/etc/ssl/private/rethinkdbB.key.pem 
cluster-tls-cert=/etc/ssl/certs/rethinkdbB.cert.pem  
cluster-tls-ca=/etc/ssl/certs/rethink-ca.pem 
join=192.168.0.3:29015 

je commence rethinkdb sur l'hôte A. Je vérifier le fichier journal qui me donne à la fin

2017-09-22T15:29:35.854921950 0.265890s notice: Server ready, "hosta_jll" 7ae511e3-2295-4882-a23b-99de9751708e 

je commence rethinkdb sur B. hôte Je vérifie son fichier journal qui se lit à la fin:

2017-09-22T13:12:39.647368542 0.135787s notice: Listening for intracluster connections on port 29015 
2017-09-22T13:12:39.647465611 0.135884s info: Attempting connection to 1 peer... 

Et le fichier journal sur l'hôte A se remplit:

2017-09-22T13:12:40.647465611 46.922271s error: Cluster server connection TLS handshake failed: certificate verify failed (OpenSSL error 336105606) 

Alors j'ai commencé à chercher quoi que ce soit sur cette erreur OpenSSL 336105606, mais n'a rien trouvé! Et comme je l'ai dit plus haut: je n'ai pas trouvé de page d'exemple/blog/how-to/help qui me montre comment faire cela pour les environnements de production. Seuls les réseaux locaux et les environnements de développement avec des certificats auto-signés.

Lorsque je supprime les lignes de cluster * du TLS fichiers conf cela fonctionne, les serveurs forment un cluster. Mais pas de chance avec TLS.

Ma question (s) est (sont): Qu'est-ce que le code d'erreur? Qu'est-ce que je fais mal? Et est-il même nécessaire d'utiliser le cryptage dans un réseau OpenStack privé, bien qu'il soit mentionné here que c'est une bonne pratique?

Après quelques jours .... help wanted!

Un grand merci à l'avance, Marc

Répondre

0

Salut Marc i ont la même question. Veuillez cocher X509v3 Extended Key Usage dans votre certificat. Si vous avez smth comme ceci:

X509v3 Extended Key Usage: 
       TLS Web Server Authentication 

que le problème. sortie valide est:

X509v3 Extended Key Usage: 
       TLS Web Server Authentication, TLS Web Client Authentication 

comment vérifier

openssl s_client -connect rethink-server1:31015 -key ./certs/r2-key.pem -cert ./certs/r2-cert.pem -CAfile ./certs/ca.pem -servername rethink-server2 | openssl x509 -text -noout