Browse code

Clarify error message when a .cert file is missing a corresponding key

The daemon uses two similar filename extensions to identify different
kinds of certificates. ".crt" files are interpreted as CA certificates,
and ".cert" files are interprted as client certificates. If a CA
certificate is accidentally given the extension ".cert", it will lead to
the following error message:

Missing key ca.key for certificate ca.cert

To make this slightly less confusing, clarify the error message with a
note that CA certificates should use the extension ".crt".

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>

Aaron Lehmann authored on 2016/01/21 03:53:41
Showing 1 changed files
... ...
@@ -109,7 +109,7 @@ func ReadCertsDirectory(tlsConfig *tls.Config, directory string) error {
109 109
 			keyName := certName[:len(certName)-5] + ".key"
110 110
 			logrus.Debugf("cert: %s", filepath.Join(directory, f.Name()))
111 111
 			if !hasFile(fs, keyName) {
112
-				return fmt.Errorf("Missing key %s for certificate %s", keyName, certName)
112
+				return fmt.Errorf("Missing key %s for client certificate %s. Note that CA certificates should use the extension .crt.", keyName, certName)
113 113
 			}
114 114
 			cert, err := tls.LoadX509KeyPair(filepath.Join(directory, certName), filepath.Join(directory, keyName))
115 115
 			if err != nil {
... ...
@@ -122,7 +122,7 @@ func ReadCertsDirectory(tlsConfig *tls.Config, directory string) error {
122 122
 			certName := keyName[:len(keyName)-4] + ".cert"
123 123
 			logrus.Debugf("key: %s", filepath.Join(directory, f.Name()))
124 124
 			if !hasFile(fs, certName) {
125
-				return fmt.Errorf("Missing certificate %s for key %s", certName, keyName)
125
+				return fmt.Errorf("Missing client certificate %s for key %s", certName, keyName)
126 126
 			}
127 127
 		}
128 128
 	}