//Cloudogu EcoSystem Docs

Dogu Authentifizierung

Der Dienst cesappd stellt Zertifikate bereit, damit Dogus verschlüsselt mit cesappd kommunizieren können.

Generierung

Die Generierung des Client- und Server-Zertifikats wird bei dem CES-Setup ausgeführt. Dieses Skript befindet sich unter /usr/local/bin/ssl_cesappd_generate.sh in ces-commons. Es wird außerdem bei der Installation von cesappd im postinst-Skript angestoßen, falls es noch keine Zertifikate generiert wurden. Bei einem Wechsel der FQDN wird das Zertifikat neu generiert.

Ablage

Privater Schlüssel: /etc/ces/cesappd/server.key

  • Der Schlüssel ist nur von dem User root lesbar
  • Da sich der Schlüssel unter /etc/ces befindet wird dieser von dem Backup-Mechanismus gesichert

Server-Zertifikat: server.crt

  • Das Server-Zertifikat befindet sich im etcd unter /config/_global/certificate/cesappd/server.crt

Client-Zertifikat: ca.pem

  • Das Client-Zertifikat befindet sich im etcd unter /config/_global/certificate/cesappd/ca.pem

Verwendung

Client:

creds, _ := credentials.NewClientTLSFromFile(certFile, "")
conn, _ := grpc.Dial("localhost:50051", grpc.WithTransportCredentials(creds))
// error handling omitted
client := pb.NewGreeterClient(conn)
// ...

Server:

creds, _ := credentials.NewServerTLSFromFile(certFile, keyFile)
s := grpc.NewServer(grpc.Creds(creds))
lis, _ := net.Listen("tcp", "localhost:50051")
// error handling omitted
s.Serve(lis)

Generierung eines Service-Accounts

Mit dem Befehls

cesappd service-account-create <dogu-name>

können Service-Accounts erstellt werden. Als Ausgabe erhält man die generierten Account-Daten in folgendem Format:

username: dogu-name_<8 zufällige Zeichen>
password: <16 zufällige Zeichen>