Àwọn lẹ́tà nínú àlàyé RSA ń pe àwọn pápá tó wà nínú ohun kan, kì í ṣe àwọn fáìlì tí irinṣẹ́ PKI ń pín. Fáìlì kọ́kọ́rọ́ àdáni ní ìṣètò kan tí àwọn pápá àkọ́kọ́ rẹ̀ jẹ́ gbangba tí àwọn pápá tó tẹ̀le kò sì gbọdọ̀ fi ẹ̀rọ tí ó parí ọ̀nà-ìmọ̀ náà sílẹ̀ rárá. Láàárín àwọn òtítọ́ méjì yìí ni ọ̀pọ̀lọpọ̀ àwọn ìbéèrè ìṣe wà nípa fáìlì wo tí ń dá ìbéèrè wo lóhùn. Ìwé-ìtọ́sọ́nà yìí kọ́kọ́ ka ìṣètò náà, lẹ́yìn náà àwọn àṣẹ tí ń ṣàyẹ̀wò rẹ̀ láìdà á sílẹ̀.

Jẹ́rìí pé kọ́kọ́rọ́ náà jẹ́ RSA kí o tó wá àwọn nọ́mbà àkọ́kọ́

Ìwé-ẹ̀rí ń fi hàn pé kọ́kọ́rọ́ kan wà tí wọ́n sì ti fọwọ́ sí i; kò fi hàn pé kọ́kọ́rọ́ náà jẹ́ RSA. Wọ́n lè kọ́ àwọn ẹ̀rọ lórí àwọn ìlà ìtẹ̀gùn elliptical tàbí Ed25519, ìṣètò àwọn fódà kan náà sì ń sìn gbogbo wọn. Ṣàyẹ̀wò àlùmọ̀ọ́nà kí o tó bẹ̀rẹ̀ sí wá àwọn ohun ìdí àkọ́kọ́ tí kò tíì sí rí.

Àwọn àṣẹ mẹ́ta tí ń kà nìkan yìí dá ìbéèrè náà lóhùn wọ́n sì ṣàkọsílẹ̀ ẹ̀dà irinṣẹ́ náà.

openssl version
openssl x509 -in vpn-client.crt -noout -text
openssl pkey -in vpn-client.key -noout -text

Ẹ̀dà náà ṣe pàtàkì nítorí àwọn orúkọ àṣàyàn ti ṣí kiri láàárín àwọn àtẹ̀jáde àkọ́kọ́. Nínú àbájáde ìwé-ẹ̀rí, wá ìlà àlùmọ̀ọ́nà kọ́kọ́rọ́ gbangba àti ìwọ̀n kọ́kọ́rọ́ náà; nínú àbájáde kọ́kọ́rọ́, kọ́kọ́rọ́ RSA ń tẹ̀ mọ́dúlù àti ìgbéga gbangba jáde. Kọ́kọ́rọ́ orí ìlà ìtẹ̀gùn elliptical ń tẹ̀ orúkọ ìtẹ̀gùn jáde ní àárín, kò sì sí ìwádìí tí yóò mú n tàbí q jáde láti inú rẹ̀.

Ka ìṣètò náà dípò base64

PEM jẹ́ base64 tí wọ́n fi àwọn ìlà orí kọ́, ṣíṣe àtúpalẹ̀ rẹ̀ sì ń fúnni ní DER, ìyẹn ìṣètò tí wọ́n tẹ̀ lẹ́sẹẹsẹ kì í ṣe nọ́mbà odidi ńlá kan. Àwọn kọ́kọ́rọ́ àdáni RSA ń rìn nínú àwọn àpótí méjì tó wọ́pọ̀, PKCS#1 àti PKCS#8, àwọn méjèèjì sì ń yọjáde sí àkójọ nọ́mbà kan náà.

Ní ọ̀ràn àwọn nọ́mbà àkọ́kọ́ méjì, ìṣètò àdáni náà gbé pápá mẹ́sàn-án: ẹ̀dà, mọ́dúlù n, ìgbéga gbangba e, ìgbéga àdáni d, àwọn nọ́mbà àkọ́kọ́ p àti q, ìgbéga CRT méjì àti ìdásẹ́ CRT kan. RFC 8017 apá A.1 ń ṣàlàyé àwọn ẹ̀yà wọ̀nyẹn àti ìṣètò ASN.1, ó sì ń gba nọ́mbà àkọ́kọ́ tó ju méjì lọ pẹ̀lú, ìdí nìyẹn tí olùtúpalẹ̀ gbogbogbò fi lè tẹ̀ àwọn àkọsílẹ̀ àkọ́kọ́ àfikún jáde. Kíyèsí ìtẹ̀lẹ́sẹẹsẹ, nítorí ó ń ṣàlàyé àṣìṣe tó wọ́pọ̀: a ń tọ́jú ìdajì gbangba sínú fáìlì àdáni, nítorí náà wíwà pápá gbangba kò mú kí fáìlì yẹn ní ààbò láti pín. Ohun gbogbo tó tẹ̀le ni ohun èlò tí ó gbọdọ̀ wà lórí olùgbàlejò.

Ìkọ̀wé ń fi ìpele kan kún un tí ó rọrùn láti dà pọ̀ mọ́ àkóónú. openssl asn1parse ń ya ìṣètò náà gẹ́gẹ́ bí igi kí ìtẹ̀lẹ́sẹẹsẹ àwọn pápá lè hàn, kò sì ṣí ohunkóhun kò sì sọ bóyá kọ́kọ́rọ́ náà lè ṣiṣẹ́.

So ìwé-ẹ̀rí pọ̀ mọ́ kọ́kọ́rọ́ láìtẹ̀ kọ́kọ́rọ́ jáde

Ìbéèrè tó tẹ̀le sábà máa ń jẹ́ bóyá ìwé-ẹ̀rí àti kọ́kọ́rọ́ kan náà ni. Ìfiwéra mọ́dúlù ń dá èyí lóhùn, ṣùgbọ́n ó tún ń ṣe àdàkọ ohun èlò tó súnmọ́ ti àdáni sínú àkọsílẹ̀ tẹ́mínà tí ó lè parí nínú tíkẹ́ẹ̀tì. Ìfiwéra àwọn ìdajì gbangba ń dá ìbéèrè kan náà lóhùn láìfi ohunkóhun aláìlera sílẹ̀ lórí ojú-ìwé.

openssl pkey -in vpn-client.key -pubout -out /tmp/key.pub
openssl x509 -in vpn-client.crt -pubkey -noout > /tmp/cert.pub
cmp /tmp/key.pub /tmp/cert.pub && echo MATCH

Àwọn fáìlì tó jọra túmọ̀ sí pé ìwé-ẹ̀rí náà gbé ìdajì gbangba ti kọ́kọ́rọ́ yẹn, ìyàtọ̀ sì túmọ̀ sí pé o di ẹni méjì tí kò tọ́ mú. Àìbáraẹnisọ̀ra yẹn gan-an ni ìdí tó wọ́pọ̀ jùlọ fún ọ̀nà-ìmọ̀ tí ń bára wọn sọ̀rọ̀ pẹ̀lú ìdùnnú tí ó sì kọ̀ ìjẹ́rìí. Lẹ́yìn náà pa àwọn fáìlì ìgbà díẹ̀ méjì rẹ́; kò sí ohun àṣírí kankan nínú wọn, ṣùgbọ́n fódà iṣẹ́ tó mọ́ rọrùn láti ronú lé lórí ní àárín ìṣẹ̀lẹ̀.

Mọ ohun tí àwọn fáìlì aládùúgbò kì í ṣe

Ìwé-ẹ̀rí kì í ṣe kọ́kọ́rọ́ gbangba tí wọ́n ti kọ̀wé tí ẹ̀gbẹ́ kejì ń ṣí pẹ̀lú ìwé-ẹ̀rí CA; ó jẹ́ ìsopọ̀ tí wọ́n fọwọ́ sí láàárín kọ́kọ́rọ́ gbangba àti dátà ìdánimọ̀. Kọ́kọ́rọ́ ìfọwọ́sí àdáni ti CA ń wà lọ́tọ̀ sí ìwé-ẹ̀rí rẹ̀ fúnra rẹ̀ àti sí gbogbo kọ́kọ́rọ́ oníbàárà. Ìbéèrè pẹ̀lú kì í ṣe ìwé-ẹ̀rí: ó ń gbé ìsọfúnni tí wọ́n béèrè àti kọ́kọ́rọ́ gbangba pẹ̀lú ìfọwọ́sí lórí ìbéèrè náà, èyí tí ń sọ ọ di ohun ìdáwọ́lé ìforúkọsílẹ̀, kì í ṣe ẹ̀rí ẹ̀tọ́.

FileAnswersDoes not prove
vpn-client.keyPossession of the private keyThat the identity is enrolled
vpn-client.crtA signed binding of public key to identityThat the client holds the matching key
vpn-client.csrThe requested binding and public keyThat access was granted
dh2048.pemGroup parameters for key exchangeAny RSA component
crl.pemRevocation status for certificatesAnything about a private key

Méjì nínú àwọn àkọsílẹ̀ yẹn ni wọ́n ń dà pọ̀ mọ́ àwọn àlèébù RSA tó pọ̀ tó láti pè wọ́n lórúkọ lẹ́ẹ̀mejì. Fáìlì àlèébù Diffie-Hellman ní àwọn àlèébù ẹgbẹ́ fún ìdásílẹ̀ kọ́kọ́rọ́ kò sì ní nọ́mbà àkọ́kọ́ RSA kankan, bí ó tilẹ̀ jẹ́ pé wọ́n tún tẹ̀ ọ́ jáde gẹ́gẹ́ bí nọ́mbà àkọ́kọ́ ńlá. Àkójọ ìfagilé ń polongo ipò àwọn ìwé-ẹ̀rí kì í sì ṣe ibi tí ìgbéga àdáni lè fi ara pa.

Nítorí náà gbogbo ìlà àkójọ yẹ kí ó ṣàkọsílẹ̀ ohun mẹ́rin: irú ohun, oníṣẹ́, èrò àti bóyá ohun èlò àdáni wà nínú rẹ̀. Ọ̀wọ̀n ìkẹyìn ni ó ń pinnu ibi tí wọ́n lè da fáìlì náà sí, ìyẹn sì ni ohun tí àwọn ènìyàn ń fò.

Ṣàkọsílẹ̀ ìsopọ̀, lẹ́yìn náà ṣàyẹ̀wò ìfọwọ́sowọ́pọ̀

Kí o tó yí ohunkóhun padà, tọ́jú àbájáde ìjẹ́rìí pẹ̀lú ọjọ́ àti ẹ̀dà OpenSSL. Nígbà náà a lè fi ìyípo tó tẹ̀le wé ẹ̀rí dípò ìrántí.

openssl verify -CAfile ca.crt vpn-client.crt
openssl x509 -in vpn-client.crt -noout -subject -issuer -dates

Lẹ́yìn ìfiwéra kọ́kọ́rọ́ gbangba, rìn ọ̀nà tí ń lo ẹni méjì náà: gbé ọ̀nà-ìmọ̀ sókè, jẹ́rìí pé wọ́n gbé ìwé-ẹ̀rí náà kalẹ̀ tí wọ́n sì gbà á, kí o sì wo ìdánimọ̀ wo ni ẹnubodè náà ṣàkọsílẹ̀. Bí kọ́kọ́rọ́ àti ìwé-ẹ̀rí bá bára wọn mu tí ìjẹ́rìí sì ṣì kùnà, àléèbù náà wà nínú ìgbẹ́kẹ̀lé, ìyípadà ìdánimọ̀ tàbí ìlànà àwọ̀lé, kì í ṣe nínú ẹni méjì náà.

Fún ìpadàbọ̀, tọ́jú kọ́kọ́rọ́ àti ìwé-ẹ̀rí ti ṣáájú nínú fódà tó ní ọjọ́ kí o sì mú àwọn méjèèjì padà papọ̀, kì í ṣe ọ̀kan nínú àwọn méjì náà rárá. Kọ́kọ́rọ́ tí kò ní ìwé-ẹ̀rí rẹ̀ àti ìwé-ẹ̀rí tí kò ní kọ́kọ́rọ́ rẹ̀ ń kùnà bákan náà láti ìta, èyí tí ń mú kí àwọn ẹni méjì tí wọ́n dá padà lọ́dàbọ̀ ṣòro láti yanjú ní agogo méjì òru.

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