2017-10-19 11 views
2

Je suis en train de démarrer un serveur dgraph avec TLS activé, mon fichier de configuration du serveur est défini comme suit:du mal à démarrer dgraph avec TLS

# Folder in which to store exports. 
export: export 

# Fraction of dirty posting lists to commit every few seconds. 
gentlecommit: 0.33 

# RAFT ID that this server will use to join RAFT groups. 
idx: 1 

# Port to run server on. (default 8080) 
port: 8080 

# GRPC port to run server on. (default 9080) 
grpc_port: 9080 

# Port used by worker for internal communication. 
workerport: 12345 

# Estimated memory the process can take. Actual usage would be slightly more 
memory_mb: 4096 

# The ratio of queries to trace. 
trace: 0.33 

# Directory to store posting lists. 
p: p 

# Directory to store raft write-ahead logs. 
w: w 

# Debug mode for testing. 
debugmode: true 

# Address of dgraphzero 
peer: localhost:8888 

# Use TLS connections with clients. 
tls.on: true 

# CA Certs file path. 
#tls.ca_certs: /Users/pauloferreira/Workspace/RagnarTech/Node/base_backend_njs/certificates/development/development-server-root-CA.pem 

# Include System CA into CA Certs. 
tls.use_system_ca: true 

# Certificate file path. 
tls.cert: /Users/pauloferreira/Workspace/RagnarTech/Node/base_backend_njs/certificates/development/development-server-root-CA.pem 

# Certificate key file path. 
tls.cert_key: /Users/pauloferreira/Workspace/RagnarTech/Node/base_backend_njs/certificates/development/development-server-root-CA.key 

# Certificate key passphrase. 
#tls.cert_key_passphrase string 

# Enable TLS client authentication 
#tls.client_auth string 

# TLS max version. (default "TLS12") 
#tls.max_version string 

# TLS min version. (default "TLS11") 
#tls.min_version string 

Dès que je commence à dgraphzero et dgraph, si la configuration tls .on est égale vrai, cette sortie est affichée:

Setting up listener at: localhost:8888 
Setting up listener at: localhost:8889 
2017/10/19 16:09:36 main.go:163: Loading configuration from file: development.conf 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["export" = export] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["grpc_port" = 9080] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["workerport" = 12345] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["p" = p] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["tls.ca_certs" = /Users/pauloferreira/Workspace/RagnarTech/Node/base_backend_njs/certificates/development/development-server-root-CA.pem] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["memory_mb" = 4096] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["peer" = localhost:8888] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["gentlecommit" = 0.33] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["idx" = 1] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["port" = 8080] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["trace" = 0.33] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["tls.on" = true] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["tls.cert" = /Users/pauloferreira/Workspace/RagnarTech/Node/base_backend_njs/certificates/development/development-server-root-CA.pem] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["w" = w] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["debugmode" = true] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["tls.use_system_ca" = true] 
2017/10/19 16:09:36 init.go:74: Picked flag from config: ["tls.cert_key" = /Users/pauloferreira/Workspace/RagnarTech/Node/base_backend_njs/certificates/development/development-server-root-CA.key] 

Dgraph version : v0.8.3 
Commit SHA-1  : 40175d0 
Commit timestamp : 2017-10-18 15:55:02 +1100 
Branch   : HEAD 

2017/10/19 16:09:36 node.go:234: Found hardstate: {Term:2 Vote:1 Commit:4 XXX_unrecognized:[]} 
2017/10/19 16:09:36 node.go:246: Group 0 found 4 entries 
2017/10/19 16:09:36 raft.go:292: Restarting node for dgraphzero 
2017/10/19 16:09:36 raft.go:567: INFO: 1 became follower at term 2 
2017/10/19 16:09:36 raft.go:315: INFO: newRaft 1 [peers: [], term: 2, commit: 4, applied: 0, lastindex: 4, lastterm: 2] 
Running Dgraph zero... 
2017/10/19 16:09:36 open : no such file or directory 

Je ne peux pas trouver ce qui cause l'erreur ouvert: aucun fichier ou répertoire, tout le monde a connu cela? J'utilise MacOS 10.12.3 (16D32) et installé la version dgraph v0.8.3 en utilisant la commande curl https://get.dgraph.io -sSf | bas

Merci d'avance.

Répondre

1

Je pense que c'est un bug (mise à jour: il a été confirmé comme un bug et était fixed). J'ai essayé de l'exécuter sur Ubuntu et j'ai la même erreur avec tls.on.

Ensuite, j'ai trouvé la suite de tests semi-manuelle pour tls here. En cours d'exécution confirmé l'erreur, les tests requis petits ajustements (ajouter --memory_mb 2048), mais après que le même échec a été reproduit.

Pour le confirmer, je aussi téléchargé dgraph sources et vérifié ce qui se passe sous delve debugger:

1) Le fichier de configuration est parsed and parameters are saved into global vars

2) les paramètres liés TLS-are used to create the tlsCfg - Ici, nous pouvons déjà voir le problème: pas tous les paramètres sont passés, par exemple, tlsKey et tlsKeyPath sont manquants

3) Si nous regardons plus profond, dans tls_helper.go, où le TLS effectivement configuré, nous pouvons trouver ce paramètre ers de la configuration sont passed into the parseCertificate method

4) Ici, nous utilisons config.Key et config.KeyPassphrase, mais ils sont vides

182: func GenerateTLSConfig(config TLSHelperConfig) (tlsCfg *tls.Config, reloadConfig func(), err error) { 
    183:   wrapper := new(wrapperTLSConfig) 
    184:   tlsCfg = new(tls.Config) 
    185:   wrapper.config = tlsCfg 
    186: 
=> 187:   cert, err := parseCertificate(config.CertRequired, config.Cert, config.Key, config.KeyPassphrase) 
    188:   if err != nil { 
    189:     return nil, nil, err 
    190:   } 
    191: 
    192:   if cert != nil { 
(dlv) p config.CertRequired 
true 
(dlv) p config.Cert 
"/home/seb/web/dgraph-test/test2.crt" 
(dlv) p config.Key 
"" 
(dlv) p config.KeyPassphrase 

Ensuite, il échoue à l'intérieur du parseCertificate quand il essaie de lire le fichier avec la clé du certificat.

J'ai posté le issue sur github.