Ich richte ein Experiment ein, bei dem ich nur den öffentlichen Schlüssel eines Zertifikats auf dem Server habe. Das Zertifikat wurde auf einem anderen Server generiert und ich habe den privaten Schlüssel nicht wiederhergestellt.
Wenn ich versuche, eine Datenbank mit Verschlüsselung mit diesem Zertifikat zu sichern, wird folgende Fehlermeldung angezeigt:
Msg 15556, Level 16, State 1, Line 15
Cannot decrypt or encrypt using the specified certificate, either because it has no private key or because the password provided for the private key is incorrect.
Msg 3013, Level 16, State 1, Line 15
BACKUP DATABASE is terminating abnormally.
Das ist SQL Server, das mir klar sagt, dass es den privaten Schlüssel für die Verschlüsselung benötigt.
Aber warum ist das so?
Nach meinem Verständnis generiert BACKUP im laufenden Betrieb einen symmetrischen Schlüssel , schützt den symmetrischen Schlüssel mithilfe des öffentlichen Schlüssels im Zertifikat und speichert ihn neben dem Sicherungsinhalt. Der symmetrische Schlüssel wird dann zum Verschlüsseln des eigentlichen Sicherungsinhalts verwendet, da die symmetrische Verschlüsselung normalerweise (immer?) Schneller ist als die asymmetrische Verschlüsselung.
Um die Sicherung wiederherzustellen, benötige ich dann den privaten Schlüssel, der dem bei der Verschlüsselung verwendeten öffentlichen Schlüssel entspricht. Das wird erwartet.
Ich verstehe nur nicht, warum der private Schlüssel während des Sicherungsvorgangs benötigt wird. Ich habe keine Antwort in Dokumenten oder anderswo gefunden. Kann mir jemand das erklären oder mich auf eine Dokumentation verweisen, warum das so ist?