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
rootlesbar - Da sich der Schlüssel unter
/etc/cesbefindet wird dieser von dem Backup-Mechanismus gesichert
Server-Zertifikat: server.crt
- Das Server-Zertifikat befindet sich im
etcdunter/config/_global/certificate/cesappd/server.crt
Client-Zertifikat: ca.pem
- Das Client-Zertifikat befindet sich im
etcdunter/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>