Àpamọ́ CA aládàáni: àkójọ tí a fi àṣírí ṣe tàbí àpamọ́ kọ́kọ́rọ́ HSM
Àkójọ tí a fi àṣírí ṣe tàbí kọ́kọ́rọ́ tí HSM fi wé: bí a ṣe ń mú kálukú àwòrán àpamọ́ CA VPN padà, ohun tí ó gbọ́dọ̀ ní, àti ìkùnà wo ni o lè ye ní tòótọ́.
Ìbéèrè tí ó ń pinnu ọ̀pọ̀ jùlọ nínú èyí kì í ṣe bí o ṣe ń fi àṣírí ṣe àkójọ náà. Ìbéèrè náà ni bóyá kọ́kọ́rọ́ ìkọ̀kọ̀ CA rẹ lè kúrò nínú àpótí rẹ̀ rárá. Bí kọ́kọ́rọ́ náà bá jẹ́ fáìlì, o lè dà gbogbo àkójọ CA sínú blob kan tí a fi àṣírí ṣe kí o sì parí ní ìṣẹ́jú díẹ̀. Bí ó bá ń gbé inú HSM tàbí tọ́kẹ̀n tí ó ń sàmì sí kọ́kọ́rọ́ náà gẹ́gẹ́ bí èyí tí a kò lè yọ jáde, kò sí irú ẹ̀dà bẹ́ẹ̀, ètò rẹ yóò sì di ètò nípa ìlànà wíwé àti ìmúpadà ti olùpèsè. Àwòrán méjèèjì ń ṣiṣẹ́, wọ́n ń kùnà lọ́nà ọ̀tọ̀ọ̀tọ̀, ìkùnà tí o lè ye ni èyí tí ó yẹ kí a ṣe àpẹẹrẹ yí i ká.
Ibi tí àwòrán àpamọ́ méjì yà sọ́tọ̀
Àwòrán A jẹ́ ẹ̀dà àkójọ. CA lọ́nà OpenSSL jẹ́ àkójọ iṣẹ́, kì í ṣe ẹ̀rí kan ṣoṣo: ca.key tàbí cakey.pem, ca.crt, ibi ìpamọ́ ìpèsè, àwọn kíkà serial àti crlnumber, àti openssl.cnf. Fi àmì sí àkójọ yẹn pẹ̀lú cipher aláìdọ́gba, gbé àbájáde lọ sí ohun èlò kejì, ìmúpadà sì túmọ̀ sí ṣí, fi hàn, buwọ́lu. Ohun gbogbo tí olùpèsè nílò ń rìnrìn àjò pọ̀, pẹ̀lú àwọn ọ̀sẹ̀ ìtàn ìfagilé tí kò sí ẹni tí ó rántí pé ó kọ.
Àwòrán B jẹ́ dídá kọ́kọ́rọ́ mọ́. A ń dá kọ́kọ́rọ́ náà nínú module PKCS#11, a sì ń sàmì sí i gẹ́gẹ́ bí èyí tí a kò lè yọ jáde; module náà lè wé e fún àpamọ́, ṣùgbọ́n kò sí ìlànà tí ń ka àwọn byte àìdá. Nígbà náà àpamọ́ rẹ jẹ́ ohun méjì tí a gbọ́dọ̀ mú padà lẹ́sẹẹsẹ tí ó tọ́: blob kọ́kọ́rọ́ tí a wé tí ìdílé module yẹn nìkan lè ṣí, pẹ̀lú ẹ̀dà lasan ti ibi ìpamọ́, ìṣètò àti àwọn ẹ̀rí.
| Attribute | Encrypted archive | HSM key backup |
|---|---|---|
| What you store | one encrypted file | wrapped blob plus CA records |
| Who can restore it | anyone holding the passphrase | holder of the module and the blob, often vendor support |
| If a copy leaks | attacker with the passphrase becomes the CA | blob is inert without the matching module |
| What usually breaks it | forgotten passphrase, one damaged copy | replacement module rejects the blob, contract gap |
Ìfiwéra kì í ṣe nípa irú àwòrán tí ó lágbára jùlọ ní àfojúdi rárá. Ó jẹ́ nípa èyí tí ẹgbẹ́ rẹ lè mú padà ní agogo 2 ìrọ̀lẹ́ pẹ̀lú àwọn ènìyàn tí wọ́n wà lójúfò ní tòótọ́. Àkójọ tí kò sí ẹni tí ó lè tú àṣírí rẹ̀ àti blob HSM tí kò sí ẹni tí ó ti dán wò jẹ́ aláìlérè bákan náà. Ìyàtọ̀ ni pé ìkùnà àkójọ máa ń farahàn nínú olùṣàkóso ọ̀rọ̀ àsírí, ìkùnà HSM sì ń fi ara pa mọ́ nínú àdéhùn ìtìlẹ́yìn.
Ohun tí gbogbo àpamọ́ CA gbọ́dọ̀ ní
Àwòrán méjèèjì nílò àkójọ àkọsílẹ̀ kan náà. Nínú CA OpenSSL àwọn fáìlì yẹn ni index.txt pẹ̀lú ìlà kan fún ẹ̀rí kọ̀ọ̀kan tí a pèsè tí ó bo ipò, àkókò ìparí, serial àti kókó, lẹ́yìn náà index.txt.attr, serial tí ó ń pa serial tó tẹ̀lé fún ìpèsè mọ́, crlnumber tí ó ń pa nọ́mbà CRL tó tẹ̀lé mọ́, àti openssl.cnf pẹ̀lú dir, policy àti default_days tí CA rẹ ń ṣiṣẹ́ pẹ̀lú ní tòótọ́. Ìwé ìtọ́sọ́nà openssl-ca ń ṣàlàyé ohun tí kíkà kọ̀ọ̀kan nínú àwọn wọ̀nyí ń darí. easy-rsa ń pa àwọn dátà kan náà mọ́ lábẹ́ pki/, fáìlì vars sì ń pinnu àwọn pápá ẹ̀rí.
Kọ́kọ́rọ́ àti ẹ̀rí ni àwọn ẹ̀yà tí o kò lè tún kọ́. Ibi ìpamọ́ ni ẹ̀yà tí o kò lè tún ṣe láti inú ìrántí. Yíyọ index.txt kùnà ń jẹ́ kí o lè buwọ́lu àwọn ẹ̀rí tuntun, ìdẹkùn gbáà sì ni yẹn: ìwọ yóò mọ̀ pé ó ṣàkù nígbà àkọ́kọ́ tí oníbàárà kan bá béèrè bóyá a ti fagilé ẹ̀rí kan. Ṣàkọsílẹ̀ ìtẹ̀ka ika CA ní ìta àpamọ́, kí ìmúpadà lè jẹ́ ìfiwéra pẹ̀lú iye tí o gbẹ́kẹ̀lé, kì í ṣe pẹ̀lú fáìlì tí o ṣẹ̀ṣẹ̀ mú padà.
openssl x509 -in ca.crt -noout -fingerprint -sha256
tar czf ca-state.tar.gz ca.crt ca.key index.txt* serial* crlnumber* openssl.cnf
openssl enc -aes-256-cbc -pbkdf2 -iter 200000 -salt -in ca-state.tar.gz -out ca-state.tar.gz.enc
openssl ca -config openssl.cnf -gencrl -out crl.pem
Àwọn ìdánwò ìmúpadà tí kò ń pín olùpèsè sí ẹ̀ka
CA méjì alààyè pẹ̀lú kókó kan náà àti kọ́kọ́rọ́ kan náà máa ń dà bí i pé wọ́n jẹ́ ọ̀kan fún gbogbo oníbàárà tí ó gbẹ́kẹ̀lé ìpilẹ̀. CRL méjì pẹ̀lú nọ́mbà kan náà ṣùgbọ́n àkóónú ọ̀tọ̀ọ̀tọ̀ ni ọ̀nà tí àwọn oníbàárà fi ń gbà ẹ̀rí tí o ti fagilé ní ìdákẹ́jẹ́. Ṣe ìmúpadà náà lórí ẹ̀rọ tí kò ní ọ̀nà sí àwọn oníbàárà rẹ, tàbí nínú VM ìlò kan ṣoṣo, kí o má sì ṣe tẹ̀ jáde CRL tí ìdánwò náà ń ṣẹ̀dá rárá.
Ìdánwò tí ó kàn ń fi hàn pé àkójọ ń ṣí kò fi ohunkóhun hàn nípa ìpèsè. Ẹ̀sẹ̀sẹ̀ tí ó ṣe pàtàkì: fi ìtẹ̀ka ika ca.crt tí a mú padà wé iye tí o kọsílẹ̀, jẹ́rìí pé serial bá èyí tí ẹ̀rí tí o pèsè nígbẹ̀yìn fi hàn mu, pèsè ẹ̀rí kan fún CN ìlò kan ṣoṣo kí o wò bí index.txt ṣe ń gba ìlà kan, lẹ́yìn náà fagilé ẹ̀rí yẹn kí o sì tún CRL ṣẹ̀dá.
openssl verify -CAfile ca.crt -CRLfile crl.pem -crl_check client.crt
openssl crl -in crl.pem -noout -lastupdate -nextupdate
Pẹ̀lú HSM irú ìdánwò kan náà ń gba inú module lọ. Ṣí blob náà sínú ẹ̀rọ àrọ́wọ́tó, jẹ́rìí pé ẹ̀rí CA tí module ń ròyìn bá ìtẹ̀ka ika tí o kọsílẹ̀ mu, lẹ́yìn náà nìkan jẹ́ kí ó buwọ́lu. Bí module náà bá ní ibi ìpamọ́ ohun tirẹ̀, wíwé gbọ́dọ̀ bo ohun kọ́kọ́rọ́ àti àmì rẹ̀, nítorí mímú kọ́kọ́rọ́ padà lábẹ́ àmì mìíràn ń ba ìṣètò tí ó ń tọ́ka sí i jẹ́.
Àwọn ọ̀nà ìkùnà tí ó ń pinnu yíyàn
Ìkùnà márùn-ún ń ṣàlàyé ọ̀pọ̀ jùlọ àwọn àdánù gidi. Ọ̀rọ̀ àsírí àkójọ tí a gbàgbé láìsí ẹ̀dà àṣírí olómìnira ń sọ àkójọ di bíríkì. Ẹ̀dà kan ṣoṣo lórí díìsì kan ń kú pẹ̀lú díìsì yẹn, ki í sì ṣe pé àkópọ̀ ìṣàyẹ̀wò ń sọ bóyá ìtúàṣírí ṣì ń ṣiṣẹ́. Àwọn ẹ̀rí tí a fagilé lẹ́yìn ọjọ́ àpamọ́ máa ń dà bí èyí tí ó wúlò lẹ́yìn ìmúpadà, nítorí náà àkókò àpamọ́ rẹ ni ojú afọ́jú ìfagilé rẹ pẹ̀lú. Mímú kíkà serial àtijọ́ padà ń tún àwọn nọ́mbà serial lò, ó sì ń da àwọn káṣì àti ìwádìí CRL tí a fi serial ṣe kọ́ lójú. HSM àrọ́wọ́tó tí ó kọ blob tí a wé ń sọ ìyípadà ohun èlò di àtúnpèsè pípé.
Àwòrán A ń kojú mẹ́rin àkọ́kọ́ ní ọ̀nà búburú ṣùgbọ́n tí ó ṣeé rí. Àwòrán B ń kojú wọn dáadáa títí module tàbí ìlànà olùpèsè yóò fi kùnà. Bí àwọn kọ́kọ́rọ́ rẹ bá ṣeé kó jáde àti ẹgbẹ́ náà kéré, àkójọ tí a fi àṣírí ṣe ni yíyàn tòótọ́, tí ohun èlò méjì àti ìlànà ọ̀rọ̀ àsírí àkọsílẹ̀ ń ti lẹ́yìn. Bí kọ́kọ́rọ́ náà kò bá ṣeé yọ jáde, o kò ní yíyàn rárá, iṣẹ́ náà sì ń lọ sí fífi ọ̀nà ìmúpadà olùpèsè hàn kí ọjọ́ tí o máa nílò rẹ̀ tó dé.
Yíyan àwòrán àti ṣíṣe ìtòlẹ́sẹẹsẹ
Àwọn ipò mẹ́ta ń yanjú ìpinnu. Ṣé a lè kó kọ́kọ́rọ́ jáde láìsí ìlànà olùpèsè? Ṣé ìmúpadà gbọ́dọ̀ balẹ̀ lórí ohun èlò tí o kò tíì ní? Báwo ni ìpèsè ṣe lè dúró pẹ́ tí o ń bá ìtìlẹ́yìn jiyàn? Dáhùn àwọn mẹ́ta yẹn, àwòrán náà ti pinnu; ohun gbogbo lẹ́yìn náà ni ìtòlẹ́sẹẹsẹ.
Ya àpamọ́ lẹ́yìn gbogbo ayẹyẹ ìbuwọ́lu àti ṣáájú gbogbo ìyípadà ìṣètò, nítorí ìṣètò jẹ́ apá kan ipò. Pa ẹ̀dà méjì mọ́ lórí ohun èlò ọ̀tọ̀ọ̀tọ̀ ní ibi ọ̀tọ̀ọ̀tọ̀, ọ̀kan wọn kò ní í wà lórí ayélujára, kí o sì pa àṣírí ìtúàṣírí mọ́ ní agbègbè ìgbẹ́kẹ̀lé ọ̀tọ̀ọ̀tọ̀ sí àwọn ẹ̀dà. Kọ ọjọ́ ìmúpadà àṣeyọrí tí ó kẹ́yìn sórí àkọsílẹ̀ àpamọ́. Àpamọ́ tí a kò tíì mú padà rárá jẹ́ àròsọ, kì í ṣe ìṣàkóso.
Kí o tó pa tíkẹ́ẹ̀tì náà, jẹ́rìí àwọn kókó márùn-ún wọ̀nyí:
- A kọsílẹ̀ ìtẹ̀ka ika ca.crt níbìkan ní ìta àpamọ́.
- index.txt, serial, crlnumber àti openssl.cnf wà ní inú àkójọ tàbí àkójọ blob.
- A kọ àkọsílẹ̀ ìtọ́jú ọ̀rọ̀ àsírí tàbí kọ́kọ́rọ́ tí a wé, ó sì wà lọ́wọ́ ẹlòmíràn yàtọ̀ sí onípà àkójọ.
- A dán ìmúpadà wò lórí ẹ̀rọ àdáwà pẹ̀lú ìpèsè kan àti ìfagilé kan.
- A gba àlàfo ìfagilé tí àkókò àpamọ́ rẹ ń fi hàn ní àkọsílẹ̀ tàbí a gé e kúrú.