De tradingsleutel en secrets van een app weghouden van de schijf van de server
erpc worker bewaart de tradingsleutel en de secrets van een app in 1Password, uw sleutelhanger of een versleutelde keystore, en geeft ze in het geheugen aan de app, nooit aan de schijf van de server.Deze pagina beschrijft ERPC CLI
v0.1.0-rc.4, een pre-release.Hoe de tradingsleutel de app bereikt
Een app met een wallet krijgt de sleutel via een pipe wanneer hij start. Er is geen
wallet.json, geen .env en geen kopie op de server. erpc schrijft de sleutel op geen enkele schijf onversleuteld weg: het enige bestand waarin het de sleutel zet, is dat van de keystore, op uw machine, versleuteld met uw wachtzin.- Waar hij wordt bewaard:
erpc worker key newmaakt de sleutel in 1Password alserpc loginde sessie daar bewaart, anders in de sleutelhanger, anders in de keystore.erpc.tomllegt de verwijzing naar de sleutel en de publieke sleutel vast. - Op de server: de agent van erpc worker houdt de sleutel alleen in het geheugen. Hij maakt zichzelf ondumpbaar, vergrendelt zijn geheugen en geeft de sleutel via een file descriptor aan de app; de app wist hem na het lezen.
- Na een herstart komt de worker vergrendeld terug: de app draait pas als
erpc worker startde sleutel opnieuw stuurt. Een agent die faalt of geforceerd wordt beëindigd, wordt door systemd opnieuw gestart en komt op dezelfde manier vergrendeld terug. - Een pakketupdate herstart een worker niet.
deployverteltneedrestartde worker-units met rust te laten: in de automatische modus stelt het ze uit, en als het aan een terminal wordt gevraagd, is het standaardantwoord voor die units nee, zodat een beveiligingsupdate zonder toezicht de app niet herstart. Als die regel niet kon worden geschreven, meldt de uitrol dat en gaat hij door, en draait de worker daarna zonder deze bescherming.
De tradingsleutel wordt genoemd door
[wallet] en door niets anders, en erpc leest hem alleen voor iemand aan de terminal: niet voor een AI-tool, en niet met een serviceaccount van 1Password. Een regel in [secrets] die de verwijzing van [wallet] noemt, of een account onder keychain: of keystore: dat eindigt op .wallet, wordt geweigerd. In de keystore gaat een item dat als sleutel is bewaard niet open als secret. In 1Password, en onder een sleutelhangeraccount met een andere naam, markeert niets een sleutel: noemt een erpc.toml zonder [wallet] zo'n item onder [secrets], dan wordt het als secret gelezen.Kiezen waar waarden worden bewaard
1Password is optioneel.
erpc worker key new en erpc worker secret put bewaren wat ze krijgen in de eerste van deze opties die van toepassing is, tenzij --store er een noemt (--store 1password --vault <id>, --store keychain, --store keystore):- 1Password, als
erpc loginde sessie daar bewaart of als--vaultis opgegeven. - De OS-sleutelhanger, waar die een waarde over een herstart heen bewaart: macOS, Windows, en Linux met een desktop-keyring in een ingelogde sessie.
- De keystore van erpc, op een Linux-machine zonder zo'n keyring: een headless server, WSL, een SSH-login.
--store keychainwordt op zo'n machine geweigerd.
In de sleutelhanger of de keystore bestaat de sleutel alleen op die ene machine, zonder kopie en zonder synchronisatie, en een andere machine kan een verwijzing met
keychain: of keystore: niet lezen.Een verloren of gewiste machine betekent dat de wallet weg is: houd er weinig in, of gebruik 1Password, dat elke machine kan lezen die bij de kluis is ingelogd. Log in bij 1Password met
erpc login --store 1password-desktop, of via op signin waar geen desktop-app is.Een serviceaccount van 1Password kan de secrets van een app bevatten, maar erpc leest er geen tradingsleutel mee. Met 1Password kan elke leesactie een goedkeuringsprompt in de app tonen, en erpc toont een spinner terwijl het wacht.
Een secret bewaren
Secrets, zoals API-tokens en RPC-keys, worden op dezelfde manier bewaard, maar bereiken de app als omgevingsvariabelen, niet via een pipe.
erpc worker secret put <NAME> bewaart de waarde, en [secrets] in erpc.toml bevat alleen de verwijzing ernaar.bash
--generatemaakt de waarde: 32 willekeurige bytes, als 64 hexadecimale tekens.--from-accountbewaart de eerste RPC-key van uw account die de shared RPC accepteert. De keys worden op volgorde geprobeerd, de primaire eerst, met ééngetHealthper key, die 8 seconden krijgt om te antwoorden. Een key die met 401 of 403 wordt beantwoord, wordt geweigerd en de volgende wordt geprobeerd, en alleen een key die de RPC heeft geaccepteerd, wordt bewaard. Het commando meldt of het de primaire key van het account is of een andere (account_keymet--json).- Geen van beide waarden wordt afgedrukt, ook niet met
--json. Het eerste gebruik van de keystore, of een vergrendelde keystore, vereist iemand aan de terminal. - De keys worden vanaf deze machine geprobeerd, dus een key die beperkt is tot het adres van de server, wordt hier geweigerd, ook al werkt hij daar. Als elke key wordt geweigerd, bewaart
--from-accountniets, en bewaart u de bedoelde key zelf, onzichtbaar getypt of via een pipe ingevoerd. Als de RPC niet kon worden gevraagd, bewaart het niets en iserpc.tomlongewijzigd; voer hetzelfde commando opnieuw uit.
Om een key zelf te bewaren:
bash
--replacebewaart een nieuwe waarde voor een naam die al is ingesteld.erpc worker secret listtoont de secret-instellingen op naam en waar elke instelling wordt bewaard.- Een instelling die een datalijn levert (
GRPC_ENDPOINT,SHREDS_ENDPOINT,SOLANA_SEND_RPC_ENDPOINT), is nooit een secret:--grpc,--shredsen--unlimitedstellen die in.
Een verwijzing in
[secrets] of [wallet] is een van deze:De keystore
De keystore is de map
~/.erpc/keystore (keystore onder ERPC_HOME als die is ingesteld). Op Linux en macOS hebben de mappen 0700 en de bestanden 0600; op Windows stelt erpc zelf geen rechten in.master.jsonbevat een willekeurige hoofdsleutel van 32 bytes, verzegeld onder een sleutel die PBKDF2-HMAC-SHA256 (600.000 iteraties) uit uw wachtzin afleidt. Elk item bevat één waarde, verzegeld met ChaCha20-Poly1305 onder een eigen sleutel.- De wachtzin: de eerste
key newofsecret putdie de keystore gebruikt, laat u die kiezen, twee keer getypt aan een terminal, 12 tekens of meer. erpc accepteert hem alleen via die verborgen prompt, nooit via een argument, een omgevingsvariabele of een pipe. - Ontgrendelen op Linux: zodra de wachtzin de keystore heeft geopend, wordt de ontgrendeling in de persistente keyring van de kernel bewaard, in het geheugen, totdat de machine herstart, de keyring ongebruikt blijft gedurende zijn verlooptijd bij inactiviteit (drie dagen, tenzij het systeem iets anders zegt) of
erpc worker secret lockwordt uitgevoerd.erpc worker secret unlockvraagt vooraf om de wachtzin en meldt tot wanneer de ontgrendeling geldt. In een shell die zonder eigen login is gestart (suzonder-,sudo -E), wordt geen ontgrendeling bewaard en vraagt elk commando erom. - Als er niemand aan een terminal zit, gebruikt een commando dat de keystore nodig heeft de ontgrendeling als die er is, en mislukt het anders, en noemt het daarbij
erpc worker secret unlock. Een ontgrendelde keystore geeft secrets af, niet de tradingsleutel. - Op macOS en Windows (
--store keystore) wordt geen ontgrendeling bewaard: elk commando dat de keystore nodig heeft, vraagt één keer om de wachtzin en heeft dus een terminal nodig.
Wat de keystore beschermt, en wat niet
- Maak een back-up van de map
keystoreen onthoud de wachtzin. erpc kan geen van beide herstellen, en zonder een van beide is wat de keystore bevat verloren. - Wie de keystore-bestanden en de wachtzin heeft, heeft de sleutel. PBKDF2 maakt elke gok traag, maar maakt een te raden wachtzin niet veilig.
- Zolang de keystore ontgrendeld is, kan elk programma dat onder uw gebruiker draait de hoofdsleutel uit de keyring van de kernel lezen (een programma waarvan de sessie uw keyring niet bevat, kan hem eraan koppelen) en elk item openen, ook dat van een sleutel. De eigen regels van erpc (de door
[wallet]genoemde sleutel alleen lezen voor iemand aan de terminal, nooit voor een AI-tool; een sleutel die in de keystore is bewaard nooit als secret openen) zijn wat erpc doet; ze binden geen andere programma's die onder uw gebruiker draaien. Voererpc worker secret lockuit als u klaar bent. - Itemnamen worden niet verborgen, en de grootte van een item laat zien hoe lang de waarde is.
- Een gewijzigd bestand gaat niet open; een oudere kopie van hetzelfde item die op zijn plaats is teruggezet, wel.
erpc worker secret rmverwijdert het keystore-item van een secret samen met de regel ervan inerpc.toml(tenzij een andere instelling van de app hetzelfde item noemt), en laat een waarde in 1Password of de sleutelhanger staan waar die is. Het maakt de schijf niet veilig schoon, en kopieën in uw back-ups blijven bestaan.- erpc verwijdert of overschrijft nooit het item van een tradingsleutel. Om een sleutel te vervangen, verplaatst u eerst het geld en verwijdert u daarna zelf het bestand van de sleutel en
[wallet]. - Een instelling kan niet
WALLETheten, ongeacht hoofdletters of kleine letters, in de keystore of de sleutelhanger;--store 1passwordaccepteert die naam.
Werken met de tradingsleutel
Als erpc eindigt zonder te weten of een overboeking is aangekomen, zoek dan de handtekening ervan op voordat u opnieuw verstuurt: een tweede verzending is een tweede overboeking.






