Trading-Schlüssel und Secrets einer Anwendung vom Datenträger des Servers fernhalten
erpc worker bewahrt den Trading-Schlüssel und die Secrets einer Anwendung in 1Password, in Ihrem Schlüsselbund oder in einem verschlüsselten Keystore auf und übergibt sie der Anwendung im Arbeitsspeicher, nie über den Datenträger des Servers.Diese Seite beschreibt ERPC CLI
v0.1.0-rc.4, eine Vorabversion.Wie der Trading-Schlüssel zur Anwendung gelangt
Eine Anwendung mit Wallet erhält ihren Schlüssel beim Start über eine Pipe. Auf dem Server gibt es keine
wallet.json, keine .env und keine Kopie. erpc schreibt den Schlüssel unverschlüsselt auf keinen Datenträger: Die einzige Datei, in die es ihn schreibt, ist die des Keystores, auf Ihrem Rechner, verschlüsselt mit Ihrer Passphrase.- Wo er aufbewahrt wird:
erpc worker key newerstellt den Schlüssel in 1Password, wennerpc logindie Sitzung dort aufbewahrt, sonst im Schlüsselbund, sonst im Keystore.erpc.tomlhält die Referenz des Schlüssels und seinen öffentlichen Schlüssel fest. - Auf dem Server: Der Agent von erpc worker hält den Schlüssel nur im Arbeitsspeicher. Er macht sich selbst nicht dumpbar, sperrt seinen Arbeitsspeicher und übergibt den Schlüssel der Anwendung über einen Dateideskriptor; die Anwendung vernichtet ihn nach dem Lesen.
- Nach einem Neustart kommt der Worker gesperrt zurück: Die Anwendung läuft erst, wenn
erpc worker startden Schlüssel erneut sendet. Ein Agent, der ausfällt oder beendet wird, wird von systemd neu gestartet und kommt auf dieselbe Weise gesperrt zurück. - Ein Paket-Update startet einen Worker nicht neu.
deployweistneedrestartan, die Worker-Units in Ruhe zu lassen: Im automatischen Modus stellt es sie zurück, und wird es an einem Terminal gefragt, lautet seine Standardantwort für sie Nein, sodass ein unbeaufsichtigtes Sicherheitsupdate die Anwendung nicht neu startet. Konnte diese Regel nicht geschrieben werden, meldet die Bereitstellung das und fährt fort, und der Worker läuft dann ohne diesen Schutz.
Der Trading-Schlüssel wird durch
[wallet] benannt und durch nichts anderes, und erpc liest ihn nur für eine Person am Terminal: nicht für ein KI-Werkzeug und nicht mit einem 1Password-Dienstkonto. Eine [secrets]-Zeile, die die Referenz aus [wallet] nennt, oder ein keychain:- oder keystore:-Konto, das auf .wallet endet, wird abgelehnt. Im Keystore öffnet sich ein als Schlüssel aufbewahrter Eintrag nicht als Secret. In 1Password und unter einem Schlüsselbund-Konto mit anderem Namen kennzeichnet nichts einen Schlüssel: Nennt eine erpc.toml ohne [wallet] ein solches Element unter [secrets], wird es als Secret gelesen.Festlegen, wo Werte aufbewahrt werden
1Password ist optional.
erpc worker key new und erpc worker secret put bewahren, was sie erhalten, an der ersten der folgenden Stellen auf, die zutrifft, sofern --store keine nennt (--store 1password --vault <id>, --store keychain, --store keystore):- 1Password, wenn
erpc logindie Sitzung dort aufbewahrt oder--vaultangegeben ist. - Der OS-Schlüsselbund, dort, wo er einen Wert über einen Neustart hinaus behält: macOS, Windows und Linux mit einem Desktop-Keyring in einer angemeldeten Sitzung.
- Der Keystore von erpc, auf einem Linux-Rechner ohne einen solchen Keyring: ein Headless-Server, WSL, eine SSH-Anmeldung.
--store keychainwird auf einem solchen Rechner abgelehnt.
Im Schlüsselbund oder im Keystore existiert der Schlüssel nur auf diesem einen Rechner, ohne Kopie und ohne Synchronisierung, und ein anderer Rechner kann eine
keychain:- oder keystore:-Referenz nicht lesen.Geht der Rechner verloren oder wird er gelöscht, ist die Wallet weg: Bewahren Sie wenig darin auf, oder verwenden Sie 1Password, das jeder beim Tresor angemeldete Rechner lesen kann. Melden Sie sich mit
erpc login --store 1password-desktop bei 1Password an, oder über op signin, wo es keine Desktop-App gibt.Ein 1Password-Dienstkonto kann die Secrets einer Anwendung enthalten, aber erpc liest einen Trading-Schlüssel nicht mit einem solchen Konto. Mit 1Password kann jeder Lesevorgang in der App eine Bestätigungsabfrage anzeigen, und erpc zeigt einen Spinner, während es wartet.
Ein Secret aufbewahren
Secrets wie API-Tokens und RPC-Schlüssel werden auf dieselbe Weise aufbewahrt, gelangen aber als Umgebungsvariablen zur Anwendung, nicht über eine Pipe.
erpc worker secret put <NAME> bewahrt den Wert auf, und [secrets] in erpc.toml enthält nur seine Referenz.bash
--generateerzeugt den Wert: 32 Zufallsbytes als 64 hexadezimale Zeichen.--from-accountbewahrt den ersten RPC-Schlüssel Ihres Kontos auf, den der Shared RPC annimmt. Die Schlüssel werden der Reihe nach versucht, der primäre zuerst, mit je einemgetHealth, das 8 Sekunden Zeit für die Antwort hat. Ein Schlüssel, auf den mit 401 oder 403 geantwortet wird, wird abgelehnt und der nächste versucht, und nur ein Schlüssel, den der RPC angenommen hat, wird aufbewahrt. Der Befehl meldet, ob es der primäre Schlüssel des Kontos ist oder ein anderer (account_keymit--json).- Keiner der beiden Werte wird ausgegeben, auch nicht mit
--json. Die erste Verwendung des Keystores oder ein gesperrter Keystore braucht eine Person am Terminal. - Die Schlüssel werden von diesem Rechner aus versucht, daher wird ein Schlüssel, der auf die Adresse des Servers beschränkt ist, hier abgelehnt, obwohl er dort funktioniert. Werden alle Schlüssel abgelehnt, bewahrt
--from-accountnichts auf, und Sie bewahren den gemeinten Schlüssel von Hand auf, verdeckt eingegeben oder per Pipe übergeben. Konnte der RPC nicht gefragt werden, bewahrt der Befehl nichts auf, underpc.tomlbleibt unverändert; führen Sie denselben Befehl erneut aus.
Um einen Schlüssel von Hand aufzubewahren:
bash
--replacebewahrt einen neuen Wert für einen Namen auf, der bereits gesetzt ist.erpc worker secret listlistet die geheimen Einstellungen nach Namen auf und zeigt, wo jede aufbewahrt wird.- Eine Einstellung, die eine Datenleitung bereitstellt (
GRPC_ENDPOINT,SHREDS_ENDPOINT,SOLANA_SEND_RPC_ENDPOINT), ist nie ein Secret:--grpc,--shredsund--unlimitedsetzen sie.
Eine Referenz in
[secrets] oder [wallet] hat eine dieser Formen:Der Keystore
Der Keystore ist das Verzeichnis
~/.erpc/keystore (keystore unter ERPC_HOME, wenn dieses gesetzt ist). Unter Linux und macOS haben seine Verzeichnisse 0700 und seine Dateien 0600; unter Windows setzt erpc keine eigenen Berechtigungen.master.jsonenthält einen zufälligen 32-Byte-Hauptschlüssel, versiegelt mit einem Schlüssel, den PBKDF2-HMAC-SHA256 (600.000 Iterationen) aus Ihrer Passphrase ableitet. Jeder Eintrag enthält einen Wert, versiegelt mit ChaCha20-Poly1305 unter einem eigenen Schlüssel.- Die Passphrase: Der erste Aufruf von
key newodersecret put, der den Keystore verwendet, lässt Sie sie wählen, zweimal an einem Terminal eingegeben, mindestens 12 Zeichen. erpc nimmt sie nur aus dieser verdeckten Abfrage entgegen, nie aus einem Argument, einer Umgebungsvariable oder einer Pipe. - Entsperren unter Linux: Sobald die Passphrase den Keystore geöffnet hat, wird die Entsperrung im persistenten Kernel-Keyring gehalten, im Arbeitsspeicher, bis der Rechner neu startet, der Keyring bis zu seinem Leerlaufablauf ungenutzt bleibt (drei Tage, sofern das System nichts anderes festlegt) oder
erpc worker secret lockausgeführt wird.erpc worker secret unlockfragt die Passphrase im Voraus ab und meldet, bis wann die Entsperrung gilt. In einer Shell, die ohne eigenen Login gestartet wurde (suohne-,sudo -E), wird keine Entsperrung gehalten, und jeder Befehl fragt. - Ohne Person am Terminal verwendet ein Befehl, der den Keystore braucht, die Entsperrung, wenn es eine gibt, und schlägt andernfalls fehl, wobei er
erpc worker secret unlocknennt. Ein entsperrter Keystore gibt Secrets heraus, nicht den Trading-Schlüssel. - Unter macOS und Windows (
--store keystore) wird keine Entsperrung gehalten: Jeder Befehl, der den Keystore braucht, fragt einmal nach der Passphrase und braucht daher ein Terminal.
Was der Keystore schützt und was nicht
- Sichern Sie das Verzeichnis
keystoreund merken Sie sich die Passphrase. erpc kann keines von beiden wiederherstellen, und fehlt eines davon, ist verloren, was der Keystore enthält. - Wer die Keystore-Dateien und die Passphrase hat, hat den Schlüssel. PBKDF2 macht jeden Rateversuch langsam, macht eine erratbare Passphrase aber nicht sicher.
- Solange der Keystore entsperrt ist, kann jedes Programm, das unter Ihrem Benutzer läuft, den Hauptschlüssel aus dem Kernel-Keyring lesen (ein Programm, dessen Sitzung Ihren Keyring nicht enthält, kann ihn einbinden) und jeden Eintrag öffnen, auch den eines Schlüssels. Die eigenen Regeln von erpc (den Schlüssel, den
[wallet]nennt, nur für eine Person am Terminal zu lesen, nie für ein KI-Werkzeug; einen im Keystore aufbewahrten Schlüssel nie als Secret zu öffnen) sind das, was erpc tut; sie binden keine anderen Programme, die unter Ihrem Benutzer laufen. Führen Sieerpc worker secret lockaus, wenn Sie fertig sind. - Die Namen der Einträge sind nicht verborgen, und die Größe eines Eintrags zeigt, wie lang der Wert ist.
- Eine veränderte Datei öffnet sich nicht; eine ältere Kopie desselben Eintrags, die an ihre Stelle zurückgelegt wird, schon.
erpc worker secret rmlöscht den Keystore-Eintrag eines Secrets zusammen mit seiner Zeile inerpc.toml(außer wenn eine andere Einstellung der Anwendung denselben Eintrag nennt) und lässt einen Wert in 1Password oder im Schlüsselbund, wo er ist. Es bereinigt den Datenträger nicht, und Kopien in Ihren Backups bleiben bestehen.- erpc löscht oder überschreibt nie den Eintrag eines Trading-Schlüssels. Um einen Schlüssel zu ersetzen, verschieben Sie die Mittel und entfernen dann seine Datei und
[wallet]selbst. - Eine Einstellung kann nicht
WALLETheißen, unabhängig von der Groß- und Kleinschreibung, weder im Keystore noch im Schlüsselbund;--store 1passwordakzeptiert den Namen.
Mit dem Trading-Schlüssel arbeiten
Endet erpc, ohne zu wissen, ob eine Überweisung angekommen ist, sehen Sie ihre Signatur nach, bevor Sie erneut senden: Ein zweites Senden ist eine zweite Überweisung.






