ConnMan OpenConnect ಕುಕಿ ಅವಧಿ ಮುಗಿಯುವುದು, ಪ್ರಮಾಣಪತ್ರದ ಸಮಸ್ಯೆ ಅಲ್ಲ
ಲಾಗ್ನಲ್ಲಿ ಎರಡು ವೈಫಲ್ಯಗಳು ಒಂದೇ ರೀತಿ ಕಾಣುತ್ತವೆ. ಪಿನ್ ಮಾಡಿದ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ನು ಸೆಷನ್ ಕುಕಿಯೊಂದಿಗೆ ಹೋಲಿಸಿ, ಅವಧಿ ಮುಗಿದ ಕ್ಷೇತ್ರವನ್ನು ನವೀಕರಿಸಿ, ನಂತರ ಡೀಮನ್ ಮರುಪ್ರಾರಂಭಿಸಿ.
ConnMan ಒಂದು ಮಧ್ಯಾಹ್ನ ಕೆಲಸ ಮಾಡಿ ನಂತರ ನಿರಾಕರಿಸುತ್ತದೆ, ಮತ್ತು ಜರ್ನಲ್ ಸಾಲು ಪ್ರಮಾಣಪತ್ರ ಪರಿಶೀಲನೆಯನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತದೆ. ಆ ಸಾಲು ಜನರನ್ನು ಎಂದೂ ಹಾಳಾಗದ CA ಬಂಡಲ್ಗಳತ್ತ ಕಳುಹಿಸುತ್ತದೆ. ಎರಡು ವಿಭಿನ್ನ ದೋಷಗಳು ಬಹುತೇಕ ಒಂದೇ ರೀತಿಯ ವೈಫಲ್ಯವನ್ನು ಉಂಟುಮಾಡುತ್ತವೆ: ಸೆಷನ್ ಕುಕಿ ಅವಧಿ ಮುಗಿಯುತ್ತದೆ, ಅಥವಾ ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರ ನಿಜವಾಗಿ ಬದಲಾಗಿದೆ. ಅವನ್ನು ಸುಮಾರು ಒಂದು ನಿಮಿಷದಲ್ಲಿ ಬೇರ್ಪಡಿಸಬಹುದು, ಮತ್ತು ಅವುಗಳಲ್ಲಿ ಒಂದೇ ಫಿಂಗರ್ಪ್ರಿಂಟ್ಗೆ ಸಂಬಂಧಿಸಿದೆ.
ಎರಡು ದೋಷಗಳು, ಒಂದು ಗೊಂದಲದ ಲಾಗ್ ಸಾಲು
ಅವು ಎರಡು ಅವಲೋಕನಗಳಿಂದ ಬೇರ್ಪಡುತ್ತವೆ, ಮತ್ತು ಯಾವುದಕ್ಕೂ ಎರಡನೇ ಬಾರಿ ಓದುವ ಅಗತ್ಯವಿಲ್ಲ. ಮೊದಲನೆಯದು ವೈಫಲ್ಯ ಯಾವಾಗ ಆರಂಭವಾಯಿತು ಎಂಬುದು: ಅವಧಿ ಮುಗಿದ ಕುಕಿ ಗಂಟೆಗಳು ಅಥವಾ ದಿನಗಳ ಕೆಲಸದ ನಂತರ ಬರುತ್ತದೆ, ಮತ್ತು ಬದಲಾದ ಪ್ರಮಾಣಪತ್ರ ಗೇಟ್ವೇ ಬದಲಾವಣೆಯ ನಂತರ ತಕ್ಷಣ ಬರುತ್ತದೆ.
| Signal | Expired cookie | Changed certificate |
|---|---|---|
| When it started | after hours or days of working | right after a gateway change |
| Fingerprint from a fresh authenticate | unchanged | different value |
| Usual log tail | HTTP CONNECT 401 / unauthorized | signer not found / verify failed |
| Repair | replace the cookie, restart | re-pin deliberately, then restart |
ಒಂದು ನಿಮಿಷದ ಪರೀಕ್ಷೆ ಎಂದರೆ ಕೆಳಗಿನ authenticate ಓಟ. ಅದರ FINGERPRINT ಅನ್ನು ಫೈಲ್ನಲ್ಲಿರುವ OpenConnect.ServerCert ಜೊತೆ ಹೋಲಿಸಿ. ಒಂದೇ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಮತ್ತು ಬೇರೆ COOKIE ಎಂದರೆ ಕುಕಿ ಮಾತ್ರ ಬದಲಿಸಿ. ಬೇರೆ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಎಂದರೆ ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರ ನಿಜವಾಗಿ ಬದಲಾಗಿದೆ, ಆದ್ದರಿಂದ ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಮತ್ತೆ ಪಿನ್ ಮಾಡಿ ಮತ್ತು ಯಾರು ಅನುಮೋದಿಸಿದರು ಎಂದು ದಾಖಲಿಸಿ.
ಟೈಪ್ ಮಾಡುವ ಬದಲು ವಸ್ತುವನ್ನು ಉತ್ಪಾದಿಸಿ
NetworkManager ಗಿಂತ ಭಿನ್ನವಾಗಿ, ConnMan ಗೆ OpenConnect ಪ್ರೊಫೈಲ್ಗಾಗಿ ಆಮದು ಹಂತವಿಲ್ಲ. ಅದು ಮೌಲ್ಯಗಳನ್ನು ಮೊದಲೇ ಉತ್ಪಾದಿಸಬೇಕಾದ ಒದಗಿಸುವಿಕೆ ಫೈಲ್ ಓದುತ್ತದೆ, ಮತ್ತು ಅವನ್ನು ಉತ್ಪಾದಿಸುವ ಬೆಂಬಲಿತ ದಾರಿ OpenConnect ನ authenticate ಮೋಡ್.
sudo openconnect --csd-wrapper=/home/user/.cisco/csd-wrapper.sh \
--authenticate --user myuser vpn.example.comಔಟ್ಪುಟ್ ನಾಲ್ಕು ಮೌಲ್ಯಗಳನ್ನು ಮುದ್ರಿಸುತ್ತದೆ: POST, COOKIE, HOST ಮತ್ತು FINGERPRINT. sha256: ಪೂರ್ವಪ್ರತ್ಯಯದ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಸರ್ವರ್ ಪಿನ್. ಕುಕಿ ಎಂಬುದು ಗೇಟ್ವೇ ನಿರ್ಧರಿಸುವ ಆಯುಷ್ಯವಿರುವ ಸೆಷನ್ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್. ಅವನ್ನು ವಿಭಿನ್ನ ರಹಸ್ಯ ಪ್ರಕಾರಗಳೆಂದು ಪರಿಗಣಿಸಿ: ಅವು ಬೇರೆ ಬೇರೆ ವೇಳಾಪಟ್ಟಿಯಲ್ಲಿ ಮುಗಿಯುತ್ತವೆ, ಮತ್ತು ಒಂದೇ ಬದಲಾಗುವ ನಿರೀಕ್ಷೆ ಇದೆ.
ಫೈಲ್ ಎರಡನ್ನೂ ಹೊರುತ್ತದೆ, ಮತ್ತು ಅವು ಬೇರೆ ರೀತಿಯಲ್ಲಿ ವೃದ್ಧಾಪ್ಯಕ್ಕೆ ಒಳಗಾಗುತ್ತವೆ
ಒದಗಿಸುವಿಕೆ ಫೈಲ್ /var/lib/connman-vpn/ ಅಡಿಯಲ್ಲಿ ಇರುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ಸಂಪರ್ಕಕ್ಕೂ VPN ಡೀಮನ್ ಅದನ್ನು ಓದುತ್ತದೆ, ಟ್ರೇ ಆಪ್ಲೆಟ್ ಅಲ್ಲ. ಸಂಪರ್ಕದ ಹೆಸರನ್ನು ಜಾಗತಿಕ ವಿಭಾಗದಲ್ಲಿ ಮತ್ತು ಪ್ರೋಟೋಕಾಲ್ ವಿವರಗಳನ್ನು ಪೂರೈಕೆದಾರ ವಿಭಾಗದಲ್ಲಿ ಇರಿಸಿ.
[global]
Name = Company VPN
[provider_openconnect]
Type = OpenConnect
Name = Company Cisco VPN
Host = vpn.example.com
Domain = corp.example
OpenConnect.ServerCert = sha256:...
OpenConnect.Cookie = ...ಪೋರ್ಟಲ್ ನಿಜವಾಗಿ ಸೇವೆ ಸಲ್ಲಿಸುವ ಹೋಸ್ಟ್ ಹೆಸರನ್ನು ಬಳಸಿ. ಬರೀ IP ವಿಳಾಸ ಪ್ರಮಾಣಪತ್ರ ಪರಿಶೀಲನೆಯನ್ನು ದಾಟಿ ಸಹ ವಿಫಲವಾಗಬಹುದು, ಏಕೆಂದರೆ ಸಾಧನ ವರ್ಚುವಲ್ ಹೋಸ್ಟ್ ಮೇಲೆ ಮಾರ್ಗನಿರ್ದೇಶನ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹೆಸರನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತದೆ.
systemctl status connman-vpn --no-pager # is the daemon even installed and running
sudo systemctl restart connman-vpn # after the file edit
journalctl -u connman-vpn --since '1 hour ago' # after the connection attemptಜರ್ನಲ್ ನಿಜವಾಗಿ ಏನನ್ನು ತೋರಿಸುತ್ತದೆ
ಟ್ರೇ ಟೂಲ್ಟಿಪ್ ನಿಮಗೆ ಯಾವ ದೋಷ ಎಂದು ಹೇಳುವುದಿಲ್ಲ. ಮೊದಲ ಎಚ್ಚರಗೊಳಿಸುವ ಸಾಲಿನ ಬದಲು ಕ್ರಮವನ್ನು ಓದಿದರೆ ಜರ್ನಲ್ ಹೇಳುತ್ತದೆ. ಹಳೆಯ ಕುಕಿ ಸಾಮಾನ್ಯವಾಗಿ TLS ಮಾತುಕತೆ ಪೂರ್ಣಗೊಂಡು HTTP ಪದರ ನಂತರ ನಿರಾಕರಿಸಿದೆ ಎಂದು ತೋರಿಸುತ್ತದೆ; ಅದಕ್ಕಾಗಿಯೇ ಪ್ರಮಾಣಪತ್ರಗಳ ಬಗ್ಗೆ ಮಾತುಗಳು ಅಧಿಕಾರ ವೈಫಲ್ಯದ ಪಕ್ಕದಲ್ಲಿ ನಿಲ್ಲುತ್ತವೆ.
ಹೊಸ authenticate ಓಟವನ್ನು ಫೈಲ್ನಲ್ಲಿರುವ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಹೋಲಿಸಿ. ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಹೊಂದಿಕೆಯಾಗಿ ಕುಕಿ ಮಾತ್ರ ಭಿನ್ನವಾದರೆ, ವಿಶ್ವಾಸ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮುಟ್ಟದೆ ನಿಮ್ಮ ಉತ್ತರ ಸಿಕ್ಕಿದೆ.
ಅವಧಿ ಮುಗಿದ ಕ್ಷೇತ್ರವನ್ನು ನವೀಕರಿಸಿ
authenticate ಆದೇಶವನ್ನು ಪುನರಾವರ್ತಿಸಿ, OpenConnect.Cookie ಬದಲಿಸಿ ಮತ್ತು ಡೀಮನ್ ಮರುಪ್ರಾರಂಭಿಸಿ. ಹೊಸ ಔಟ್ಪುಟ್ ಬೇರೆ ಮೌಲ್ಯ ತೋರಿಸದ ಹೊರತು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ನು ಬಿಡಿ; ಆ ಸಂದರ್ಭದಲ್ಲಿ ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರ ನಿಜವಾಗಿ ಬದಲಾಗಿದೆ ಮತ್ತು ಮತ್ತೆ ಪಿನ್ ಮಾಡುವುದು ಯಾರೋ ದಾಖಲಿಸಬೇಕಾದ ನಿರ್ಣಯ, ದೋಷ ಸಂದೇಶದಿಂದ ಅಂಟಿಸುವುದಲ್ಲ.
ನವೀಕರಣವನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸುವುದು ಸಮಂಜಸ: ಸಣ್ಣ ಸ್ಕ್ರಿಪ್ಟ್ ಪ್ರಮಾಣಿತ ಇನ್ಪುಟ್ನಿಂದ ಪಾಸ್ವರ್ಡ್ ಓದಿ, authenticate ಮೋಡ್ ಚಲಾಯಿಸಿ, ಕುಕಿ ಸಾಲನ್ನು ಮಾತ್ರ ಮತ್ತೆ ಬರೆಯುತ್ತದೆ. ರುಜುವಾತನ್ನು ಸ್ಕ್ರಿಪ್ಟ್ನಿಂದ ಹೊರಗಿಡಿ ಮತ್ತು ಅದನ್ನು ಚಲಾಯಿಸುವ ಖಾತೆಗೆ ಮಾತ್ರ ಓದಬಹುದಾಗಿರಿಸಿ, ಮತ್ತು ಮರುಬರವಣಿಗೆಯನ್ನು ಪರಮಾಣು ಮಾಡಿ, ವಿಫಲ ಓಟ ಅರ್ಧ ಬರೆದ ಫೈಲ್ ಬಿಡದಂತೆ.
ನವೀಕರಣ ಪ್ರತಿ ಕೆಲವು ಗಂಟೆಗಳಿಗೊಮ್ಮೆ ಬೇಕಾದರೆ, ಮಧ್ಯಂತರವನ್ನು ಬರೆದಿಡಿ. ಅದು ಗೇಟ್ವೇಯ ಸೆಷನ್ ನೀತಿಯ ಲಕ್ಷಣ, ಮತ್ತು ನವೀಕರಣವನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸಬೇಕೆ ಅಥವಾ ಉದ್ದವಾದ ಸೆಷನ್ ಕೇಳಬೇಕೆ ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ.