Ìkọ́ Go, ìfisọ́ Composer àti alábàáṣepọ̀ Python ń ṣiṣẹ́ ní ilé, gbogbo wọn sì ń kùnà nínú VPN ilé-iṣẹ́. Àpẹẹrẹ yẹn ń sọ fún ọ nípa ọ̀nà, kì í ṣe nípa ohun èlò náà. Ohun kan lórí ihò náà yí ẹ̀wọ̀n ìwé-ẹ̀rí tí ìlànà rẹ ń rí, tàbí ó tún ìfọwọ́sowọ́pọ̀ ṣe kí ẹ̀wọ̀n kankan tó dé. Àwọn àṣìṣe méjèèjì dàbí ara wọn nínú tẹ́mínà, wọ́n sì nílò àwọn ìdáhùn tó yàtọ̀ pátápátá.

Àwọn ìfiránṣẹ́ mẹ́ta, àwọn ọ̀nà mẹ́ta

Àṣìṣe x509 certificate signed by unknown authority túmọ̀ sí pé wọ́n kọ́ ẹ̀wọ̀n kan, gbòǹgbò rẹ̀ kò sì sí nínú ibi ìdánilójú tí ìlànà yẹn ń lò. Àṣìṣe self-signed certificate in certificate chain sábà túmọ̀ sí pé aṣojú àyẹ̀wò dáhùn pẹ̀lú ìwé-ẹ̀rí tirẹ̀, èyí sì jẹ́ ẹ̀wọ̀n tí àyíká ṣíṣe rẹ kò dá mọ̀. SSL EOF ní àkókò ìfọwọ́sowọ́pọ̀ túmọ̀ sí pé wọ́n ti kúrò ní ìsopọ̀ kí wọ́n tó fi ìwé-ẹ̀rí tó wúlò rárá ránṣẹ́, èyí sì jẹ́ ẹ̀rọ àárín tí ń kọ ClientHello, kì í ṣe ìṣòro ìdánilójú rárá.

Fífi àsíá tí kò ní ààbò kún un ń mú kí àwọn ìfiránṣẹ́ mẹ́tẹ̀ẹ̀ta parẹ́ nígbà tí ìdíkọ́ wà níbẹ̀, ó sì ń yọ àyẹ̀wò tí yóò mú apànìyàn gidi.

Wá àkójọ tí ìlànà ń kà gan-an

Gbòǹgbò ilé-iṣẹ́ tí a fi sórí ibi ìpamọ́ Windows ń tún àwọn aṣàwákiri àti àwọn ohun èlò .NET tí ń béèrè níbi ìpamọ́ ẹ̀rọ ṣe. Kò ṣe ohunkóhun fún ìkọ́ tó ń ṣiṣẹ́ nínú àpótí, tó gbé àkójọ CA tirẹ̀, bẹ́ẹ̀ ni kò ṣe ohunkóhun fún ìlànà Python tó ń lo certifi tàbí ìlànà Node tó ń lo àkójọ tirẹ̀. Go ń ka àkójọ ẹ̀rọ àyíká tí bínárì ń ṣiṣẹ́ nínú, ìyẹn àpótí, kì í ṣe kọ̀mpútà gbé kàn náà. Nítorí náà ẹ̀rọ kan ń pèsè aṣàwákiri tó ń ṣiṣẹ́ àti irínṣẹ́ ìkọ́ tó ń kùnà lẹ́ẹ̀kan náà.

Bèèrè lọ́wọ́ irínṣẹ́ náà dípò kí o dá rò. python3 -c "import ssl; print(ssl.get_default_verify_paths())" ń tẹ àwọn fáìlì tí Python yóò béèrè jáde, node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" sì ń fi hàn bóyá a ti ṣètò àtúnyẹ̀wò tẹ́lẹ̀. Fún àpótí, ṣe àyẹ̀wò kan náà nínú àwòrán náà, nítorí ìyẹn ni àyíká tí ìkọ́ ń lò gan-an.

Fi gbòǹgbò kan sórí níbi tí ìkọ́ ti ń ṣiṣẹ́

Gba gbòǹgbò àyẹ̀wò lọ́wọ́ IT gẹ́gẹ́ bí fáìlì PEM kí o sì jẹ́rìí ẹ̀ka ìka rẹ̀ nípasẹ̀ ọ̀nà ọ̀tọ̀ kí o tó gbẹ́kẹ̀lé e. Lórí àwọn àwòrán tó dá lórí Debian, dà á sínú /usr/local/share/ca-certificates/ kí o sì ṣe update-ca-certificates; àwọn àwòrán ìdílé RHEL ń lo update-ca-trust lẹ́yìn tí wọ́n fi fáìlì náà sínú /etc/pki/ca-trust/source/anchors/. Nínú ìkọ́ àpótí, fi àwọn ìgbésẹ̀ yẹn kún un kí ó tó àṣẹ tó ń kùnà, kí ẹ̀yà náà lè wà ní káṣì lórí ìfisọ́ àwọn ohun tó gbára lé.

Fún devcontainer àdúgbò, so PEM mọ́ kí o sì ṣe àṣẹ ìmúdójú kan náà ní ìbẹ̀rẹ̀ dípò sísun ún sínú àwòrán ti ara ẹni tí ẹnìkan kì í lè tún ṣe. Àwọn irínṣẹ́ tó gbé àkójọ tirẹ̀ wá nílò àtúnyẹ̀wò tí a kọ sílẹ̀ tirẹ̀: pip ní ètò ìwé-ẹ̀rí, npm ní ètò cafile, àwọn mìíràn sì gba àwọn oníyipada àyíká àkọ́kọ́.

Èyí kì í ṣe bíi gbígba ìwé-ẹ̀rí yóò wù. Ìwọ ń fi gbòǹgbò pàtó kan tí o gbà lọ́wọ́ ẹgbẹ́ tó ń ṣe àyẹ̀wò kún àyíká kan, ìjẹ́rìí sì wà lórí fún gbogbo ẹ̀wọ̀n mìíràn. Kọ sílẹ̀ fáìlì wo ni a fi kún un àti ìgbà tí yóò parí, nítorí gbòǹgbò àyẹ̀wò ń di tuntun bíi gbogbo CA mìíràn.

Nígbà tí ìfọwọ́sowọ́pọ̀ bá kú kí ìwé-ẹ̀rí tó dé

Bí a kò bá gbé ohunkóhun jáde, kò sí ìyípadà nínú ibi ìdánilójú tó máa ràn ọ́ lọ́wọ́. Fi ìbéèrè kan náà wé pẹ̀lú ihò tó ṣí àti tó ti, lẹ́yìn náà yẹ ẹ̀wọ̀n náà wò ní tààrà pẹ̀lú openssl s_client -connect host:443 -servername host -showcerts. Ìsopọ̀ tí ó parí níta VPN tí a sì tún ṣe ní inú rẹ̀ jẹ́ ìpinnu ìlànà ẹ̀rọ àárín, ìtọ́jú sì ni ìyọkúrò fún olùgbàlejò yẹn, kì í ṣe ìwé-ẹ̀rí mìíràn. Bèèrè kí a gba ìforúkọsílẹ̀ àkójọ tàbí ibi ìparí API kọjá láìyípadà.

Pípín ihò kí irínṣẹ́ lè yẹra fún VPN ń yẹra fún àyẹ̀wò fún ìrìnàjò yẹn, èyí tó lè tẹ́ ìlànà, kò sì mú irínṣẹ́ náà di alágbẹ́kẹ̀lé.

Kọ àbájáde fún irínṣẹ́ kọ̀ọ̀kan

Àkọsílẹ̀ kúkúrú tó ṣàtòjọ bínárì, fáìlì ìdánilójú tó ń kà, oníyipada àyíká tó wà nínú eré àti ìyọkúrò tí a fọwọ́ sí ń gba ẹni tó kàn lọ́wọ́ àkànlò ìwádìí gbogbo. Tọ́jú àkọsílẹ̀ fún irínṣẹ́ kọ̀ọ̀kan dípò kọ̀mpútà gbé kàn kọ̀ọ̀kan, nítorí kọ̀mpútà gbé kàn kì í sábà jẹ́ ohun tó yí padà.

Àti pé pa gbólóhùn méjì mọ́ lọ́tọ̀ nínú tíkẹ́ẹ̀tì: a fi gbòǹgbò ilé-iṣẹ́ pàtó kan sórí, a sì pa ìjẹ́rìí. Ọ̀kan nínú méjèèjì ni ìgbésẹ̀ àtìlẹ́yìn.

Àwọn àpilẹ̀kọ tó jọra