Tẹ́mínà ń fi ayọ̀ jábọ̀ ẹ̀yà OpenSSL, ṣùgbọ́n igi orísun kò ṣì ṣiṣẹ́ pẹ̀lú ìfiránṣẹ́ nípa àwọn orí crypto tí ó sọnù. Àwọn gbólóhùn méjèèjì jẹ́ òtítọ́ ní àkókò kan, nítorí pé a ń fi irinṣẹ́ àkókò ìṣiṣẹ́ àti àkójọ ìwọlé kíkọ́ lọ́nà lọ́tọ̀ọ̀tọ̀. Ṣe àwọn àyẹ̀wò mẹ́rin wọ̀nyí lẹ́sẹẹsẹ: àwọn pákéjì tí a fi sílẹ̀, àbájáde ìwádìí, àwọn ipa ìwádìí àti nígbẹ̀yìn bóyá orísun fúnra rẹ̀ bá a mu. Dúró ní àyẹ̀wò àkọ́kọ́ tí ó ṣàlàyé ìkùnà dípò fífi àtẹ̀jáde ìgbẹ́kẹ̀lé àtijọ́ mọ́lẹ̀.

Àkókò ìṣiṣẹ́ àti ìwọlé kíkọ́ jẹ́ pákéjì ọ̀tọ̀ọ̀tọ̀

Pínpín kan ń pín OpenSSL sí pákéjì àkókò ìṣiṣẹ́ tí ó ń pèsè ibi ìkójọpọ̀ àpapọ̀ àti irinṣẹ́ ìlà àṣẹ, àti pákéjì ìdàgbàsókè tí ó ń pèsè orí, orúkọ ìsopọ̀ tí kò ní ẹ̀yà àti metadata pkg-config. Fífi èyí àkọ́kọ́ sílẹ̀ kò fi èkejì sílẹ̀, àti pé olùkójọ́ nílò èkejì nìkan.

Ṣàyẹ̀wò ohun tí ó wà ní tòótọ́ dípò ohun tí o rántí pé o fi sílẹ̀. Nínú àwọn ètò tí ó dá lórí Debian pákéjì ìdàgbàsókè sábà máa ń jẹ́ libssl-dev, nígbà tí àkókò ìṣiṣẹ́ jẹ́ pákéjì ibi ìkójọpọ̀ pẹ̀lú ẹ̀yà àti fáìlì bínárì openssl.

dpkg -l | grep -E 'libssl-dev|libssl3|openssl'
pkg-config --modversion openssl
openssl version

Àṣẹ àkọ́kọ́ fi hàn èwo nínú àwọn mẹ́ta ni a fi sílẹ̀, èkejì ń jábọ̀ ẹ̀yà tí ètò kíkọ́ yóò rí nípasẹ̀ pkg-config, àti ẹ̀kẹta ń jábọ̀ ẹ̀yà àkókò ìṣiṣẹ́. Ìlà tí ó sọnù nínú àbájáde àkọ́kọ́ ń ṣàlàyé àṣìṣe lẹ́sẹ̀kẹsẹ̀. Ìyàtọ̀ ẹ̀yà láàrín èkejì àti ẹ̀kẹta jẹ́ ìṣòro mìíràn, ó sì sábà túmọ̀ sí pé ìfiṣílẹ̀ méjì ń díje.

Ka àbájáde ìwádìí kíkọ́ fúnra rẹ̀

Púpọ̀ nínú àwọn ìkùnà ni a lè rí nínú àkọsílẹ̀ ìṣètò bí o bá kà á ṣáájú àkópọ̀. Mọ́dùùlì FindOpenSSL ti CMake ń jábọ̀ àpótí include àti àwọn ibi ìkójọpọ̀ tí ó rí, ó sì kùnà pẹ̀lú ìfiránṣẹ́ pàtó nígbà tí ẹ̀ka pàtàkì kan kò sí.

Jẹ́rìí sí ẹ̀yà mọ́dùùlì tí iṣẹ́ náà ń lò, nítorí pé ẹ̀dà tí a kó sínú igi orísun lè hùwà yàtọ̀ sí èyí tí a fi pẹ̀lú CMake tí a fi sílẹ̀. Lẹ́yìn náà ka àtẹ̀jáde ẹ̀ka: iṣẹ́ tí ó ń béèrè Crypto nìkan kò nílò ibi ìkójọpọ̀ SSL, àti pé iṣẹ́ tí ó ń béèrè SSL yóò kùnà bí apá kan pákéjì ìdàgbàsókè bá wà.

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
grep -i -E 'openssl|ssl' build/CMakeCache.txt

Àṣẹ àkọ́kọ́ ń tún ṣètò láti ìbẹ̀rẹ̀, èkejì ń fi àwọn àbájáde tí a fi pamọ́ hàn, pẹ̀lú àpótí gbòǹgbò tàbí ipa ibi ìkójọpọ̀ èyíkéyìí tí mọ́dùùlì dúró lé. Bí káṣì bá tọ́ka sí ìpèfọ́n àtijọ́ láti ìgbìyànjú àtẹ̀yìnwá, pa àpótí kíkọ́ rẹ́ kí o sì tún ṣètò dípò ṣíṣe àtúnṣe àwọn iye pẹ̀lú ọwọ́. Àwọn àkọsílẹ̀ káṣì tí ó ti gbó jẹ́ ìdí tí ó wọ́pọ̀ fún ìkùnà tí ó ń kọjá àtúnṣe tí ó tọ́.

Darí kíkọ́ sí ìfiṣílẹ̀ tí ó tọ́, ní tòòró

Nígbà tí OpenSSL tí a fọwọ́sí bá wà ní òde ipa ìwádìí àìlẹ́gbẹ́, FindOpenSSL ń ṣàkọsílẹ̀ OPENSSL_ROOT_DIR gẹ́gẹ́ bí ìmọ̀ràn fún kíkọ́ pàtó yẹn. Nínú àwọn ètò tí ó dàbí Unix ó tún béèrè pkg-config, nítorí náà PKG_CONFIG_PATH tí ó yẹ lè ràn ọ lọ́wọ́ láìyí ohunkóhun padà lẹ́gbẹ́.

cmake -S . -B build -DOPENSSL_ROOT_DIR=/opt/openssl-3.2 -DCMAKE_BUILD_TYPE=Release
ldd build/vpn_client | grep -i ssl

Àṣẹ àkọ́kọ́ ń dín ìmọ̀ràn náà sí àpótí kíkọ́ kan ṣoṣo, èkejì ń fi hàn ibi ìkójọpọ̀ àpapọ̀ tí fáìlì bínárì tí ó jáde yóò gbé ní àkókò ìṣiṣẹ́. Kíkọ́ tí ó so mọ́ ìpèfọ́n tí a ní lọ́kàn àti fáìlì bínárì tí ó ń gbé òmíràn jẹ́ ìṣòro ipa àkókò ìṣiṣẹ́, kì í ṣe ìṣòro ìwádìí, ó sì nílò ìpinnu nípa rpath tàbí ìṣètò olùgbé dípò àmì ìṣètò mìíràn.

Jẹ́ kí àwọn yíyàn wọ̀nyí wà ní àdúgbò fún kíkọ́. Fífi àwọn ibi ìkójọpọ̀ ètò rọ́pò tàbí ṣíṣe àtúnṣe àwọn fáìlì pkg-config àgbáyé láti tẹ́ iṣẹ́ kan lọ́rùn ni ọ̀nà tí àpótí iṣẹ́ tí ń ṣiṣẹ́ fi di èyí tí ó ti bàjẹ́. Àpótí kíkọ́ tí ó ń ṣàkọsílẹ̀ ìpèfọ́n ni a lè tún ṣe; ìyípadà lórí gbogbo ẹ̀rọ jẹ́ ìṣẹ̀lẹ̀ àtìlẹ́yìn tí ń dúró de iṣẹ́ tí ó kàn. Pa àpótí kíkọ́ rẹ́ nígbà tí o bá yí ìmọ̀ràn padà, kí káṣì má baà lè pa ìdáhùn àtijọ́ mọ́.

Mọ̀ nígbà tí orísun fúnra rẹ̀ jẹ́ ìṣòro

Ìgbésẹ̀ ìṣètò tí ó yọrísí ń fi hàn nìkan pé àwọn àyẹ̀wò ti parí. Ìkójọpọ̀ ṣì lè kọ API tí orísun ń retí, àti ìsopọ̀ ṣì lè kùnà nítorí àmì tí ó sọnù. Tọ́jú àṣìṣe pàtó àkọ́kọ́ láti ìpele kọ̀ọ̀kan, nítorí pé àwọn tí ó tẹ̀lé sábà jẹ́ àbájáde.

OpenSSL 3 polongo àwọn àwòrán ibi ìsopọ̀ mélòó kan tí ó ti gbó tí àwọn oníbàárà VPN àtijọ́ ń lò tààrà, ó sì yọ wọ́n kúrò, nítorí náà igi orísun láti ìgbà yẹn lè nílò àwọn ìyípadà gidi dípò ipa include tuntun. Bí àwọn olùtọ́jú bá ṣe àtìlẹ́yìn fún ìtúsílẹ̀ lọ́wọ́lọ́wọ́, lo ìyẹn. Bí wọn kò bá ṣe bẹ́ẹ̀, ìpinnu jẹ́ ti ẹni tí ó ní iṣẹ́ náà, kì í ṣe ti wíwa orúkọ fáìlì ibi ìkójọpọ̀ àtijọ́.

Àwọn ẹ̀ka àpótí iṣẹ́ àṣàyàn náà ní àwọn ìbéèrè wọn. Àfojúsùn ìlà àṣẹ tí ó ń ṣètò dáadáa kò sọ nípa bóyá àkójọ irinṣẹ́ GUI àti olùṣàtúnṣe yóò kọ́, nítorí náà ka àtẹ̀jáde pákéjì Qt àtijọ́ gẹ́gẹ́ bí ìtàn kì í ṣe gẹ́gẹ́ bí àpèjúwe. Ṣàyẹ̀wò àwọn àṣàyàn ti àtúnyẹ̀wò orísun fúnra rẹ̀ fún àwọn àwòrán ibi ìsopọ̀ tí a fi ń ṣiṣẹ́ ní àìlẹ́gbẹ́. Lẹ́yìn náà kọ́ ohun tí o nílò nìkan, nítorí pé gbogbo ìgbẹ́kẹ̀lé àṣàyàn jẹ́ ìṣòro ìwádìí mìíràn tí ń dúró de ìṣẹ̀lẹ̀.

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