Kiel OpenVPN solvas la atestilon kaj la ŝlosilon: enmetita PEM aŭ vojo
La sama direktivo portas aŭ dosiervojon aŭ enmetitan PEM-objekton. Legu, kiun el la du uzas la ŝargita profilo, antaŭ ol movi atestilojn ie ajn.
La mesaĝo diras, ke OpenVPN ne povas ŝargi enmetitan atestilon, sed la dosiernomo en via kapo diras aliĉe. Tio, kion ricevis la analizilo, pli gravas ol tio, kion enhavas la dosiersistemo, ĉar la direktivo cert akceptas du tute malsamajn specojn de valoro. Unu estas vojo, kiun ĝi malfermas; la alia estas PEM-teksto, kiu alvenis interne de la agordo. Ĝis vi scias, kiun formon ricevis la ruliĝanta kliento, ĉiu korekto estas diveno.
Du stokaj formoj, unu direktivo
La direktivoj cert, key kaj ca ĉiu akceptas vojon aŭ enmetitan blokon. Kiam la valoro estas vojo, OpenVPN malfermas tiun dosieron kaj legas la objekton de la disko. Kiam la agordo enhavas blokon limigitan per cert-etikedoj, la sama direktivo anstataŭe konsumas la enhavon inter tiuj etikedoj, kaj aparta dosiero ne partoprenas.
Ambaŭ formoj finfine produktas la saman specon de objekto, tial funkcianta deplojo povas transiri inter ili sen ajna alia ŝanĝo. Profilo, kiu portas enmetitan klientan atestilon kaj privatan ŝlosilon, estas memstara, kaj kopii ĝin al alia maŝino funkcias sen ankaŭ kopii atestilan dosierujon.
La malo ne veras. Meti client.crt apud profilon, kiu enmetas siajn proprajn datumojn, ŝanĝas nenion, ĉar nenio en la agordo referencas tiun dosieron. Tio estas la plej ofta kialo, kial dosiero, kiu evidente ekzistas, ŝajnas esti ignorata.
Kiel enmetita bloko fariĝas objekto
Enmetita enhavo estas eltirita el la agordo kaj transdonita al la PEM-analizilo kiel teksto. Tiu analizilo atendas la kutimajn limojn: linion BEGIN, base64-ŝarĝaĵon kaj kongruan linion END. Se la bloko estis fortranĉita de malsukcesa kopio, ĉirkaŭvolvita en HTML de elŝuta paĝo aŭ malfermita en redaktilo, kiu normaligis la streketojn, la analizilo malsukcesas ĉe enhavo, kiu aspektas ĉeesta.
<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>
Tial ankaŭ la erara vortigo estas misgvida. La vorto enmetita priskribas, kie la ŝargilo rigardis, ne kion ĝi trovis tie. Dosiero nomita en agordo kaj objekto enmetita en ĝi povas produkti la saman plendon, kiam la subaj bajtoj estas neuzeblaj.
Kontrolu, kiun formon la ŝargita profilo efektive uzas, ne kiun dosieron via redaktilo hazarde malfermis:
grep -nE '^(ca|cert|key) |^<(ca|cert|key)>' client.ovpn
Kiel voja referenco estas solvata
Voja valoro estas malfermata relative al la labora dosierujo de la kliento, ne al la dosierujo enhavanta la agordon. Sub systemd tiu labora dosierujo estas tio, kion starigas la unuo, kaj interaga rulado el via ŝelo heredas ion tute alian. Tial la sama agorda dosiero povas funkcii, kiam vi testas ĝin permane, kaj malsukcesi kiel servo.
Relativaj vojoj heredas la saman ambiguecon. Kiam vi vidas nudan dosiernomon, demandu, kio estas la nuna dosierujo de la procezo en produktado, anstataŭ supozi, ke ĝi kongruas kun via terminalo.
Por atestilo stokita aparte, eksterreta analizo konfirmas la objekton antaŭ ol vi sencimigu ion ajn super ĝi:
openssl x509 -in client.crt -noout -subject -issuer -dates
openssl pkey -in client.key -noout -check
Tiuj komandoj pruvas, ke la dosieroj estas legeblaj kaj strukture validaj. Ili ne pruvas, ke la partnero fidas la eldonanton, ke la atestilo ankoraŭ estas ene de sia valideca periodo, aŭ ke la ŝlosilo apartenas al ĝi.
Kion la analizila eraro povas kaj ne povas diri al vi
Analiza malsukceso lokalizas la problemon al unu enigo kaj unu stadio. Ĝi ne diras al vi, kiun el la du stokaj formoj la kliento uzis, kaj ĝi ne diras, ĉu la objekto estus akceptita. Tiuj estas apartaj demandoj kun apartaj pruvoj.
Post kiam la analizo sukcesas, la sekva malsukceso apartenas al pli posta stadio. Fidomalakcepto, miskongruo de celo aŭ miskongruo de ŝlosilo estas raportataj de la partnero aŭ de la TLS-tavolo, ne de la ŝargilo. Ripeta anstataŭigo de la sama dosiero ne movos tiun eraron.
Tenu la senteman duonon ekster publikaj raportoj dum vi esploras. Kunhavigu la nomojn de la direktivoj, la eraran tekston kaj la strukturon de la bloko, kun la ŝlosila materialo kaj ajna identiga ŝarĝaĵo forigitaj. La manlibro openvpn(8) dokumentas ambaŭ formojn de la dosieraj direktivoj kaj la labor-dosierujan konduton malantaŭ ili.