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>