సందేశం OpenVPN ఇన్లైన్ ధృవపత్రాన్ని లోడ్ చేయలేదని చెబుతుంది, కానీ మీ మనస్సులోని ఫైల్ పేరు వేరే విధంగా చెబుతుంది. ఫైల్ సిస్టమ్లో ఏమి ఉందో దానికంటే పార్సర్ ఏమి స్వీకరించిందో ముఖ్యం, ఎందుకంటే cert సూచన పూర్తిగా భిన్నమైన రెండు రకాల విలువలను అంగీకరిస్తుంది. ఒకటి అది తెరిచే మార్గం; మరొకటి కాన్ఫిగరేషన్ లోపలికి వచ్చిన PEM టెక్స్ట్. నడుస్తున్న క్లయింట్ ఏ రూపాన్ని పొందిందో తెలిసే వరకు ప్రతి సవరణ ఒక ఊహ.

రెండు నిల్వ రూపాలు, ఒక సూచన

cert, key మరియు ca సూచనలు ప్రతి ఒక్కటి మార్గాన్ని లేదా ఇన్లైన్ బ్లాక్ను అంగీకరిస్తాయి. విలువ మార్గం అయినప్పుడు, OpenVPN ఆ ఫైల్ను తెరిచి డిస్క్ నుండి వస్తువును చదువుతుంది. కాన్ఫిగరేషన్లో cert ట్యాగ్లతో సరిహద్దు చేయబడిన బ్లాక్ ఉన్నప్పుడు, అదే సూచన దానికి బదులుగా ఆ ట్యాగ్ల మధ్య ఉన్న కంటెంట్ను ఉపయోగిస్తుంది, ప్రత్యేక ఫైల్ ఏదీ పాల్గొనదు.

రెండు రూపాలు చివరికి ఒకే రకమైన వస్తువును ఉత్పత్తి చేస్తాయి, అందుకే పనిచేసే అమరిక ఏ ఇతర మార్పు లేకుండా వాటి మధ్య మారగలదు. తనలోనే పొందుపరిచిన క్లయింట్ ధృవపత్రాన్ని మరియు ప్రైవేట్ కీని మోసే ప్రొఫైల్ స్వయం సమృద్ధం, దాన్ని మరో మెషీన్కు కాపీ చేయడం ధృవపత్ర డైరెక్టరీని కూడా కాపీ చేయకుండా పనిచేస్తుంది.

దీనికి విరుద్ధం నిజం కాదు. తన డేటాను లోపల పొందుపరిచే ప్రొఫైల్ పక్కన client.crt ఉంచడం ఏమీ మార్చదు, ఎందుకంటే కాన్ఫిగరేషన్లో ఏదీ ఆ ఫైల్ను సూచించదు. స్పష్టంగా ఉన్న ఫైల్ నిర్లక్ష్యం చేయబడినట్లు కనిపించడానికి ఇదే అత్యంత సాధారణ కారణం.

ఇన్లైన్ బ్లాక్ ఎలా వస్తువు అవుతుంది

ఇన్లైన్ కంటెంట్ కాన్ఫిగరేషన్ నుండి సంగ్రహించబడి టెక్స్ట్గా PEM పార్సర్కు అందించబడుతుంది. ఆ పార్సర్ సాధారణ సరిహద్దులను ఆశిస్తుంది: BEGIN లైన్, base64 పేలోడ్ మరియు సరిపోలే END లైన్. బ్లాక్ విఫలమైన కాపీ వల్ల కత్తిరించబడి ఉంటే, డౌన్లోడ్ పేజీ దాన్ని HTMLలో చుట్టి ఉంటే, లేదా డాష్లను సాధారణీకరించిన ఎడిటర్లో తెరిచి ఉంటే, పార్సర్ ఉన్నట్లు కనిపించే కంటెంట్పై విఫలమవుతుంది.

<cert>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</cert>

లోపం యొక్క పదజాలం గందరగోళపరచడానికి కూడా అదే కారణం. ఇన్లైన్ అనే పదం లోడర్ ఎక్కడ చూసిందో వివరిస్తుంది, అక్కడ ఏమి కనుగొందో కాదు. కాన్ఫిగ్లో పేరు పెట్టిన ఫైల్ మరియు అందులో పొందుపరిచిన వస్తువు, మూల బైట్లు ఉపయోగించలేని స్థితిలో అదే ఫిర్యాదును ఉత్పత్తి చేయగలవు.

లోడ్ చేసిన ప్రొఫైల్ నిజంగా ఏ రూపాన్ని ఉపయోగిస్తుందో తనిఖీ చేయండి, మీ ఎడిటర్ యాదృచ్ఛికంగా తెరిచిన ఫైల్ ఏదో కాదు:

grep -nE '^(ca|cert|key) |^<(ca|cert|key)>' client.ovpn

మార్గ సూచన ఎలా పరిష్కరించబడుతుంది

మార్గ విలువ కాన్ఫిగరేషన్ ఉన్న డైరెక్టరీకి కాదు, క్లయింట్ పని డైరెక్టరీకి సాపేక్షంగా తెరవబడుతుంది. systemd కింద ఆ పని డైరెక్టరీ యూనిట్ నిర్ణయించేది, మరియు మీ shell నుండి చేసే ఇంటరాక్టివ్ రన్ పూర్తిగా వేరేదాన్ని వారసత్వంగా పొందుతుంది. అందుకే అదే కాన్ఫిగరేషన్ ఫైల్ చేతితో పరీక్షించినప్పుడు పనిచేసి సేవగా విఫలమవుతుంది.

సాపేక్ష మార్గాలు అదే అస్పష్టతను వారసత్వంగా పొందుతాయి. నగ్న ఫైల్ పేరు చూసినప్పుడు, మీ టెర్మినల్తో సరిపోతుందని భావించడం బదులు ఉత్పత్తిలో ప్రక్రియ యొక్క ప్రస్తుత డైరెక్టరీ ఏమిటో అడగండి.

విడిగా నిల్వ చేసిన ధృవపత్రం కోసం, దానిపై ఏదైనా డీబగ్ చేసే ముందు ఆఫ్లైన్ పార్స్ వస్తువును నిర్ధారిస్తుంది:

openssl x509 -in client.crt -noout -subject -issuer -dates
openssl pkey -in client.key -noout -check

ఆ ఆదేశాలు ఫైళ్లు చదవగలిగేవి మరియు నిర్మాణాత్మకంగా చెల్లుబాటు అయ్యేవి అని రుజువు చేస్తాయి. సహచరుడు జారీచేసినవారిని విశ్వసిస్తాడు, ధృవపత్రం ఇంకా దాని చెల్లుబాటు వ్యవధిలో ఉంది, లేదా కీ దానికి చెందుతుంది అని అవి రుజువు చేయవు.

పార్సర్ లోపం ఏమి చెప్పగలదు మరియు ఏమి చెప్పలేదు

పార్స్ వైఫల్యం సమస్యను ఒక ఇన్పుట్ మరియు ఒక దశకు పరిమితం చేస్తుంది. క్లయింట్ రెండు నిల్వ రూపాలలో ఏది ఉపయోగించిందో అది చెప్పదు, మరియు వస్తువు అంగీకరించబడి ఉండేదా అని కూడా చెప్పదు. ఇవి వేర్వేరు సాక్ష్యాలతో కూడిన వేర్వేరు ప్రశ్నలు.

పార్స్ విజయవంతమైన తర్వాత, తదుపరి వైఫల్యం తరువాతి దశకు చెందుతుంది. విశ్వాస నిరాకరణ, ఉద్దేశ్య అసమానత లేదా కీ అసమానతను లోడర్ కాదు, సహచరుడు లేదా TLS పొర నివేదిస్తుంది. అదే ఫైల్ను పదేపదే మార్చడం ఆ లోపాన్ని కదిలించదు.

పరిశోధన సమయంలో సున్నితమైన సగాన్ని ప్రజా నివేదికలకు వెలుపల ఉంచండి. సూచనల పేర్లు, లోపం టెక్స్ట్ మరియు బ్లాక్ నిర్మాణాన్ని పంచుకోండి, కీ మెటీరియల్ మరియు గుర్తించదగిన పేలోడ్ తొలగించి. openvpn(8) మాన్యువల్ ఫైల్ సూచనల రెండు రూపాలను మరియు వాటి వెనుక ఉన్న పని-డైరెక్టరీ ప్రవర్తనను డాక్యుమెంట్ చేస్తుంది.

సంబంధిత వ్యాసాలు