Il-ġenerazzjoni taċ-ċavetta m'għandhiex bżonn fajl temporanju, u li tħallih barra jsewwi inqas milli jissuġġerixxu ħafna mill-gwidi. Dak li tneħħi huwa ċiklu tal-ħajja ta' fajl u t-tellieqa tat-tindif madwaru. Dak li tħalli mhux mittiefes hija kull opportunità li s-sigriet jitnixxa aktar tard. Il-problema tal-korrettezza f'dawn l-iscripts ġeneralment tinsab x'imkien ieħor, għax id-dijanjostika u l-materjal taċ-ċavetta jivvjaġġaw fuq flussi differenti.

Il-fajl qatt ma kien dak l-iskopriment li ħsibt

Fajl temporanju huwa riskju konkret meta jkun jinqara minn kulħadd, meta jgħaddi minn ħabta, jew meta pass tat-tindif jiġi injorat wara eċċezzjoni. Dawn huma reali, u jiswew li jiġu miġjuba. Huma wkoll lokali, viżibbli u faċli biex jiġu ttestjati. Semmi kull wieħed fl-iskript tiegħek qabel ma tikkonkludi li l-bidla kienet biss kosmetika.

Ir-riskji aktar kwieti joqogħdu 'l isfel: iċ-ċavetta stampata waqt id-debugging, l-eċċezzjoni li tisserjalizza l-oġġett kollu tar-riżultat, il-handler tal-ħabta li jikteb dump tal-qalba, l-aggregatur tal-logs li jirċievi l-passaġġ tal-fajl u mbagħad il-kontenut. Li tevita fajl temporanju ma jagħmel xejn għal ħadd minnhom, u li temmen il-kuntrarju hija l-mod kif kitba mill-ġdid b'ħsieb tajjeb tħalli s-sigriet aktar espost minn qabel. Ittratta l-bidla bħala titjib wieħed f'sekwenza, mhux bħala s-soluzzjoni.

X'jikteb il-klijent meta ma jingħatax isem ta' fajl

Il-verżjonijiet attwali tal-klijent jibagħtu ċ-ċavetta ġġenerata lill-output standard meta l-kmand taċ-ċavetta jingħata mingħajr passaġġ tal-output. Dan l-imġieba dokumentat huwa dak li jagħmel l-approċċ fil-memorja vijabbli, u jneħħi l-ħtieġa għat-trick eqdem li l-għodda tiġi indirizzata lejn passaġġ ta' apparat.

import subprocess
proc = subprocess.run(
    ["openvpn", "--genkey", "tls-crypt"],
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    check=True,
)
key_material = proc.stdout

Għaddi l-kmand bħala lista. Hawn m'hemmx bżonn espansjoni tal-qoxra, u li tixgħel qoxra jagħmel il-fruntiera tal-argumenti dipendenti fuq virgoletti li inti ma tikkontrollax. Uża l-eżekutabbli maħsub permezz ta' passaġġ assolut jekk l-iskript jista' jaħdem b'passaġġ ta' tfittxija differenti minn dak li tistenna.

Il-verifika tal-kodiċi tar-ritorn iżżomm il-passaġġ tas-suċċess milli jkompli wara sejħa falluta. Mingħajrha, string ta' bytes vojta tista' tgħaddi 'l quddiem u tfalli biss ħafna aktar tard, fil-punt fejn iċ-ċavetta tintuża u l-messaġġ tal-iżball ma jibqax isemmi l-ġenerazzjoni xejn.

Żewġ flussi, żewġ tifsiriet

L-output standard iġorr iċ-ċavetta. L-iżball standard iġorr kull ma l-għodda trid tgħidlek, inkluż twissijiet dwar il-konfigurazzjoni, il-verżjoni u t-tip taċ-ċavetta. Li terġa' ddawwar it-tnejn f'buffer wieħed hija l-iżball li jipproduċi ċavetta li tidher plawsibbli b'sentenza mehjuta fin-nofs tagħha.

Żomm il-passaġġ tal-falliment separat ukoll. Meta s-sejħa tfalli, irrapporta l-kmand li fallew u l-istat tal-ħruġ, u mbagħad iddeċiedi b'mod konxju jekk xi parti mill-iżball standard hijiex sigura biex tintwera. Li tixħet l-oġġett kollu tar-riżultat f'log hija t-triq qasira tas-soltu, u tista' ġġorr iċ-ċavetta magħha.

Qari sikur għall-binarju huwa importanti jekk aktar tard tagħmel hash jew tqabbel il-materjal. Il-modalità tat-test b'kodifikazzjoni mhux mistennija tista' tbiddel bytes li qatt ma kienu maħsuba biex ikunu test, u ċavetta mibdula ma tistax tiġi distinta minn waħda ħażina sakemm tfalli handshake.

Jekk xorta waħda żżommha, agħmel dan b'mod konxju

Ħafna mill-implimentazzjonijiet fl-aħħar jeħtieġu ċ-ċavetta fuq id-diska, fuq il-gateway jew f'maħżen tas-sigrieti. Iktebha darba, b'permessi restrittivi mill-ħolqien minflok chmod aktar tard, u agħmel il-kitba atomika sabiex fajl parzjali qatt ma jsir dak li sservizz jaqra fil-bidu. Qlib ta' isem minn passaġġ fl-istess direttorju normalment huwa biżżejjed għal dan. Neħħi l-passaġġ tat-tħejjija fil-fergħa tal-falliment, għax il-kitba falluta hija eżattament id-daqs li n-nies jinsieh.

Issettja l-modalità tal-fajl meta l-fajl jinħoloq, u żomm il-modalità tad-direttorju restrittiva wkoll. Evita kwalunkwe passaġġ taħt post li xogħol ta' backup jiknes mingħajr ħsieb, għax sigriet f'backup tal-lejl huwa sigriet f'kull kopja ta' dak il-backup. L-istess raġunament japplika għal volum kondiviż li servizzi oħra jistgħu jaqraw.

Ċavetta kondiviża mhix identità

Il-ġenerazzjoni ta' dan il-materjal ma toħroġx ċertifikat, ma tirreġistrax klijent u ma tistabbilixxix min qed jgħaqqad. Iċ-ċavetta kondiviża tipproteġi kanal bejn partijiet li diġà jafdaw lil xulxin; l-identità għadha ġejja miċ-ċertifikat u minn kwalunkwe awtentikazzjoni li tqum quddiemu.

It-tipi taċ-ċwievet lanqas huma interkambjabbli. Ċavetta simetrika għal karatteristika waħda mhix sostitut dirett għal oħra, u l-ħarġiet il-ġodda jżidu l-varjanti tagħhom stess bi fajls differenti f'kull tarf. Iġġenera t-tip li l-konfigurazzjoni tiegħek tassew issemmi, u mbagħad użaha fir-rwol li dak it-tip jiddefinixxi.

Ittestja r-riżultat b'konnessjoni vera minflok billi tiskrutinizza d-daqs tal-fajl. Jekk il-handshake jitlesta u l-logs ma juru l-ebda twissija taċ-ċavetta, il-passaġġ tal-ġenerazzjoni huwa tajjeb; li kieku ċ-ċavetta nqatgħet minn fluss magħqud, il-konnessjoni kienet tfalli b'mod li jindika lill-pari minflok lill-iskript.

Artikli relatati