OpenVPN ಪ್ರಮಾಣಪತ್ರ ಮತ್ತು ಕೀಲಿಯನ್ನು ಹೇಗೆ ಪರಿಹರಿಸುತ್ತದೆ: ಇನ್ಲೈನ್ PEM ಅಥವಾ ಫೈಲ್ ಪಥ
ಒಂದೇ ಸೂಚನೆ ಫೈಲ್ ಪಥ ಅಥವಾ ಒಳಗೆ ಸೇರಿಸಿದ PEM ವಸ್ತುವನ್ನು ಹೊತ್ತೊಯ್ಯುತ್ತದೆ. ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಸರಿಸುವ ಮೊದಲು ಲೋಡ್ ಆದ ಪ್ರೊಫೈಲ್ ಯಾವುದನ್ನು ಬಳಸುತ್ತದೆ ಎಂದು ಓದಿ.
ಸಂದೇಶವು 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 ಅಡಿಯಲ್ಲಿ ಆ ಕೆಲಸದ ಕೋಶವು ಯುನಿಟ್ ನಿಗದಿಪಡಿಸಿದ್ದು, ಮತ್ತು ನಿಮ್ಮ ಶೆಲ್ನಿಂದ ಸಂವಾದಾತ್ಮಕ ಓಟ ಸಂಪೂರ್ಣವಾಗಿ ಬೇರೆಯದನ್ನೇ ಪಡೆಯುತ್ತದೆ. ಆದ್ದರಿಂದ ಅದೇ ಸಂರಚನಾ ಫೈಲ್ ಕೈಯಿಂದ ಪರೀಕ್ಷಿಸಿದಾಗ ಕೆಲಸ ಮಾಡಿ ಸೇವೆಯಾಗಿ ವಿಫಲವಾಗಬಹುದು.
ಸಾಪೇಕ್ಷ ಪಥಗಳು ಅದೇ ಅಸ್ಪಷ್ಟತೆಯನ್ನು ಪಡೆಯುತ್ತವೆ. ಬರೀ ಫೈಲ್ ಹೆಸರು ಕಂಡಾಗ, ನಿಮ್ಮ ಟರ್ಮಿನಲ್ಗೆ ಹೊಂದುತ್ತದೆ ಎಂದು ಊಹಿಸುವ ಬದಲು ಉತ್ಪಾದನೆಯಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಯ ಪ್ರಸ್ತುತ ಕೋಶ ಯಾವುದು ಎಂದು ಕೇಳಿ.
ಪ್ರತ್ಯೇಕವಾಗಿ ಸಂಗ್ರಹಿಸಿದ ಪ್ರಮಾಣಪತ್ರಕ್ಕಾಗಿ, ಅದರ ಮೇಲೆ ಏನನ್ನೂ ಡೀಬಗ್ ಮಾಡುವ ಮೊದಲು ಆಫ್ಲೈನ್ ಪಾರ್ಸ್ ವಸ್ತುವನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ:
openssl x509 -in client.crt -noout -subject -issuer -dates
openssl pkey -in client.key -noout -check
ಆ ಆದೇಶಗಳು ಫೈಲ್ಗಳು ಓದಲು ಸಾಧ್ಯ ಮತ್ತು ರಚನಾತ್ಮಕವಾಗಿ ಮಾನ್ಯವೆಂದು ಸಾಬೀತುಪಡಿಸುತ್ತವೆ. ಅವು ಸಹಚರನು ನೀಡುಗನನ್ನು ನಂಬುತ್ತಾನೆ, ಪ್ರಮಾಣಪತ್ರವು ಇನ್ನೂ ಅದರ ಮಾನ್ಯತಾ ಅವಧಿಯೊಳಗಿದೆ, ಅಥವಾ ಕೀಲಿ ಅದಕ್ಕೆ ಸೇರಿದೆ ಎಂದು ಸಾಬೀತುಪಡಿಸುವುದಿಲ್ಲ.
ಪಾರ್ಸರ್ ದೋಷ ಏನನ್ನು ಹೇಳಬಹುದು ಮತ್ತು ಏನನ್ನು ಹೇಳಲಾರದು
ಪಾರ್ಸ್ ವೈಫಲ್ಯವು ಸಮಸ್ಯೆಯನ್ನು ಒಂದು ಇನ್ಪುಟ್ ಮತ್ತು ಒಂದು ಹಂತಕ್ಕೆ ಸೀಮಿತಗೊಳಿಸುತ್ತದೆ. ಕ್ಲೈಂಟ್ ಎರಡು ಸಂಗ್ರಹ ರೂಪಗಳಲ್ಲಿ ಯಾವುದನ್ನು ಬಳಸಿತು ಎಂದು ಅದು ಹೇಳುವುದಿಲ್ಲ, ಮತ್ತು ವಸ್ತುವನ್ನು ಸ್ವೀಕರಿಸಲಾಗುತ್ತಿತ್ತೇ ಎಂದೂ ಹೇಳುವುದಿಲ್ಲ. ಇವು ಪ್ರತ್ಯೇಕ ಸಾಕ್ಷ್ಯಗಳಿರುವ ಪ್ರತ್ಯೇಕ ಪ್ರಶ್ನೆಗಳು.
ಪಾರ್ಸ್ ಯಶಸ್ವಿಯಾದ ನಂತರ, ಮುಂದಿನ ವೈಫಲ್ಯವು ನಂತರದ ಹಂತಕ್ಕೆ ಸೇರುತ್ತದೆ. ವಿಶ್ವಾಸ ನಿರಾಕರಣೆ, ಉದ್ದೇಶದ ಹೊಂದಾಣಿಕೆ ಇಲ್ಲದಿರುವುದು ಅಥವಾ ಕೀಲಿಯ ಹೊಂದಾಣಿಕೆ ಇಲ್ಲದಿರುವುದನ್ನು ಲೋಡರ್ ಅಲ್ಲ, ಸಹಚರ ಅಥವಾ TLS ಪದರ ವರದಿ ಮಾಡುತ್ತದೆ. ಅದೇ ಫೈಲ್ ಅನ್ನು ಪದೇ ಪದೇ ಬದಲಿಸುವುದರಿಂದ ಆ ದೋಷ ಸರಿಯುವುದಿಲ್ಲ.
ತನಿಖೆಯ ಸಮಯದಲ್ಲಿ ಸೂಕ್ಷ್ಮ ಅರ್ಧವನ್ನು ಸಾರ್ವಜನಿಕ ವರದಿಗಳಿಂದ ಹೊರಗಿಡಿ. ಸೂಚನೆಗಳ ಹೆಸರುಗಳು, ದೋಷ ಪಠ್ಯ ಮತ್ತು ಬ್ಲಾಕ್ನ ರಚನೆಯನ್ನು ಹಂಚಿಕೊಳ್ಳಿ, ಕೀಲಿ ಸಾಮಗ್ರಿ ಮತ್ತು ಯಾವುದೇ ಗುರುತಿಸುವ ಪೇಲೋಡ್ ತೆಗೆದುಹಾಕಿ. openvpn(8) ಕೈಪಿಡಿ ಫೈಲ್ ಸೂಚನೆಗಳ ಎರಡೂ ರೂಪಗಳನ್ನು ಮತ್ತು ಅವುಗಳ ಹಿಂದಿನ ಕೆಲಸದ-ಕೋಶದ ನಡವಳಿಕೆಯನ್ನು ದಾಖಲಿಸುತ್ತದೆ.