Datenbank encrypt
Verblutet opened this issue · comments
Ich weiß nicht wie das encrypten von der Datenbank funktioniert und somit fehlt bei mir die .Halite.key datei.
Wenn ich den Befehl "php bin/console doctrine:encrypt:database" eingebe muss ich danach ja noch mehr eingeben oder? Mein Problem ist, ich weiß nicht was ich da noch eingeben muss.
Hi @Verblutet
wenn du php bin/console doctrine:encrypt:database ausführst wird automatisch ein .Halite.key erstellt, wenn keiner vorhanden ist.
https://github.com/ambta/DoctrineEncryptBundle/blob/master/Resources/doc/commands.md
Hier ist die original Doku von diesem Modul.
Wichtig, Du musst bin/console anstelle von app/console verwenden und keinen Encryptor angeben, da wir diesen bereits als Default auf Halite gesetzt haben.
@holzi1005 Wo müsste denn der .Halite.key sein? Da im "Hauptordner" (.../open-datenschutzcenter) keine solche Datei ist. Und wenn ich php bin/console doctrine:encrypt:database ausführe kommt das:
Wie schon beschrieben wird bei mir kein .Halite.key erstellt und somit besteht das Problem weiter hin. Auch nach mehrmaligem neu aufsetzten des Servers hat es nicht funktioniert.
@Verblutet
der .Halite.key ist nicht sichtbar und wird meist von Windows und Linux ausgeblendet. Auf einem Linux server schau mal ob du diesen Key mit ls -la sehen kannst.
Ich habe es gerade nochmal versucht und wenn der Key nicht vorhanden ist und die Datenbank noch nicht verschlüsselt ist wird ein neuer Key generiert. (Im Root Dir vom ODC)
@holzi1005
Leider wird auch hier kein .Halite.key angezeigt.
@holzi1005
Gibt es eventuell eine Möglichkeit den .Halite.key manuell zu generieren, um dieses Problem zu umgehen?
@holzi1005 Ich finde keine Lösung ich habe es jetzt auch nochmal mit mehrmaligen neuaufsezzten versucht und es hat immernoch nicht funktioniert. Ich weiß nicht weiter.
Könnte es sein, dass evtl. eine PHP Erweiterung nicht aktiviert ist.
Wir aktivieren folgende PHP ext. in unserer php.ini
- curl
- xsl
- gd2
- gettext
- sodium
- mbstring
- exif
- gettext
- pdo_mysql
- intl
Vor allem die Erweiterung sodium ist erforderlich.
Gibt es eine Möglichkeit zu überprüfen welche/ ob eine davon nicht aktiviert ist bzw. nicht funktioniert?
@Verblutet indem du eine Datei im Public Ordner erstellst.
Diese info.php nennst und dann folgendes dort reinscheibst:
<?php
phpinfo();
dann gehst du in den Browser und gehst auf deine ODC Instanz und gibst dort xyz/info.php ein.
Dann werden dir dort alle Module angezeigt.
Oder du schaust in der php.ini nach.
Ich hab jetzt alles überprüft und alle PHP Erweiterungen sind installiert und enabled. Der .Halite.Key wir aber trotzdem nicht erstellt.
Hi @Verblutet
ich habe gerade nochmal einen Test gemacht und den gleichen Fehler erhalten.
Wir haben es so gelöst (Auf die schnelle Art) Ein Update wird kommen. Es liegt nicht am ODC, sondern an dem Encryption Bundle, daher erstellen wir ein eigenes Bundle für Composer und integrieren dieses in den ODC. Aber für jetzt kannst du das Problem folgendermaßen umgehen:
In den Dateien:
vendor/michaeldegroot/doctrine-encrypt-bundle/src/Command/DoctrineEncryptDatabaseCommand.php
vendor/michaeldegroot/doctrine-encrypt-bundle/src/Command/DoctrineDecryptDatabaseCommand.php
vendor/michaeldegroot/doctrine-encrypt-bundle/src/Command/DoctrineEncryptStatusCommand.php
musst du- ganz oben (Zeile 12)
use Symfony\Component\Console\Command\Command;
- ganz unten nach dem
$output
folgendes einfügen:return Command::SUCCESS;
Damit der .Halite.key erstellt wird muss mindestens ein Eintrag (z.B. ein Task) in der Datenbank sein. Wenn kein Value enthalten ist, wird der key nicht erstellt, sondern erst dann wenn das erste Value in der Datenbank gespeichert wird.
@holzi1005
Vielen danke ich werde es gleich ausprobieren bzw. machen. Ich bin erleichtert zu wissen dass der Fehler nicht auf meiner Seite lag. Ich wünsche viel Erfolg bei der Entwicklung des eigenen Bundles und ich freue mich schon es dann zu benutzten.
Hi @Verblutet
ich habe gerade nochmal einen Test gemacht und den gleichen Fehler erhalten.
Wir haben es so gelöst (Auf die schnelle Art) Ein Update wird kommen. Es liegt nicht am ODC, sondern an dem Encryption Bundle, daher erstellen wir ein eigenes Bundle für Composer und integrieren dieses in den ODC. Aber für jetzt kannst du das Problem folgendermaßen umgehen:In den Dateien:
* `vendor/michaeldegroot/doctrine-encrypt-bundle/src/Command/DoctrineEncryptDatabaseCommand.php` * `vendor/michaeldegroot/doctrine-encrypt-bundle/src/Command/DoctrineDecryptDatabaseCommand.php` * `vendor/michaeldegroot/doctrine-encrypt-bundle/src/Command/DoctrineEncryptStatusCommand.php` musst du * ganz oben (Zeile 12) `use Symfony\Component\Console\Command\Command;` * ganz unten nach dem `$output` folgendes einfügen: `return Command::SUCCESS;`
Damit der .Halite.key erstellt wird muss mindestens ein Eintrag (z.B. ein Team) in der Datenbank sein. Wenn kein Value enthalten ist, wird der key nicht erstellt, sondern erst dann wenn das erste Value in der Datenbank gespeichert wird.
Hi @holzi1005,
ich habe das gleiche Problem.
Ich habe die obigen Anpassungen vorgenommen, und es wurde SUCCESS durchgeführt.
Allerdings keine .Halite.key erzeugt.
In der Tabelle Teams habe ich etwas drinnen. Welche Tabelle muss denn noch gefüllt sein?
Ich habe das selbe Problem ich habe nur noch gewartet es zu schreiben weil ich den Server nochmal neu aufsetzen wollte um zu sehen ob ich einen Fehler gemacht habe aber wenn jemand anderes das selbe Problem hat brauch ich dass nicht mehr tun.
Ich habe einen Task erstellt und dann wurde der .Halite.key erstellt
Es muss mindestens ein Value enthalten, dass verschlüsselt werden muss.
Einen task in der Datenbank erstellt? Oder übers ODC Interface?
@Verblutet
Wenn über die Datenbank, muss erneut der Befehl für die Encryption eingegeben werden.
Vielen Dank. Es hat funktioniert. Ich habe es jetzt über die Datenbank eingetragen weil ich vorher über das odc Interface immer einen Fehler bekommen habe da der .Halite.key nicht vorhanden war…
Wenn ich auf die Aufgabe drauf klicke kommt folgender Fehler: „ Argument 1 passed to Symfony\Bridge\Doctrine\Form\Type\DoctrineType::createChoiceName() must be an object, null given, called in /var/www/open-datenschutzcenter/vendor/symfony/form/ChoiceList/Factory/DefaultChoiceListFactory.php on line 170“
Ich habe einen Task erstellt und dann wurde der .Halite.key erstellt
Es muss mindestens ein Value enthalten, dass verschlüsselt werden muss.
Ich konnte die Aufgabe über das Webinterface anlegen.
Danach gab es noch einen Fehler wegen Permission Denied auf den ROOT Folder.
Da habe ich die Berechtigung auf www-data gesetzt und dann war alles i.O.
Danke für die Hilfe
Ich weiß nicht ob es so gehört oder nicht aber wenn ich z.B. auf eine Aufgabe klicke dann bekomme ich folgenden Fehler: „ Argument 1 passed to Symfony\Bridge\Doctrine\Form\Type\DoctrineType::createChoiceName() must be an object, null given, called in /var/www/open-datenschutzcenter/vendor/symfony/form/ChoiceList/Factory/DefaultChoiceListFactory.php on line 170“
Ich weiß nicht ob es so gehört oder nicht aber wenn ich z.B. auf eine Aufgabe klicke dann bekomme ich folgenden Fehler: „ Argument 1 passed to Symfony\Bridge\Doctrine\Form\Type\DoctrineType::createChoiceName() must be an object, null given, called in /var/www/open-datenschutzcenter/vendor/symfony/form/ChoiceList/Factory/DefaultChoiceListFactory.php on line 170“
Bitte ein neues Issue dafür aufmachen.