രണ്ട് CA സർട്ടിഫിക്കറ്റുകൾക്ക് ഒരേ പൊതു കീയും ഒരേ subject-ഉം ഉണ്ടായിരിക്കാം, എന്നിട്ടും പരസ്പരം മാറ്റാനാവില്ല. ഒന്ന് സ്വയം-സൈൻ ചെയ്തത്, മറ്റൊന്ന് പഴയ റൂട്ട് ക്രോസ്-സൈൻ ചെയ്തത്, അവയുടെ ഇഷ്യൂവർ പേരുകളും സീരിയൽ നമ്പറുകളും സിഗ്നേച്ചറുകളും വ്യത്യസ്തമാണ്. ഒരു ലീഫിന് അതിന്റെ Authority Key Identifier വഴി അവയിലൊന്നിൽ പ്രത്യേകമായി ബന്ധപ്പെടാം. ആ ബന്ധം ക്ലയന്റ് തെറ്റായ ചെയിൻ തിരഞ്ഞെടുത്ത് handshake വ്യക്തമായ കാരണമില്ലാതെ പരാജയപ്പെടുന്നതുവരെ അദൃശ്യമായി തുടരും.

ഈ അഞ്ച് പരിശോധനകൾ ക്രമത്തിൽ ചെയ്യുക: ഓരോന്നും വ്യത്യസ്തമായ പരാജയം ഒഴിവാക്കുന്നു.

പരിശോധന 1: ടെംപ്ലേറ്റ് തൊടുന്നതിന് മുമ്പ് രണ്ട് ചെയിനുകളും വരയ്ക്കുക

പാതകൾ എഴുതിവെക്കുക. പഴയ ജനസംഖ്യ പഴയ റൂട്ട് A-യെ വിശ്വസിക്കുന്നു, അത് CA B ഇഷ്യു ചെയ്തു, അത് സെർവറിന്റെ ലീഫ് ഇഷ്യു ചെയ്തു. പുതിയ ജനസംഖ്യ സ്വയം-സൈൻ ചെയ്ത CA B-യെ നേരിട്ട് വിശ്വസിക്കുന്നു. രണ്ട് B സർട്ടിഫിക്കറ്റുകളും ഒരേ കീയും subject-ഉം വഹിക്കുന്നു, അതുകൊണ്ടുതന്നെ subject വരി വായിക്കുന്ന ഒരാൾ ഒരു CA കാണുന്നിടത്ത് ക്ലയന്റ് രണ്ടെണ്ണം കാണുന്നു.

ക്രോസ്-സൈൻ ചെയ്ത പകർപ്പും യഥാർത്ഥ CA സർട്ടിഫിക്കറ്റായിരിക്കണം, സൈൻ ചെയ്യാൻ അനുവദിക്കുന്ന basic constraints-ഉം key usage-ഉം ഉള്ളത്.

പരിശോധന 2: കീ മാത്രമല്ല, AKI ഫീൽഡുകൾ താരതമ്യം ചെയ്യുക

ലീഫിന്റെ ഇഷ്യൂവർ പേര് B-യുടെ subject-മായി പൊരുത്തപ്പെടണം, ആ ഭാഗം സാധാരണയായി നിലനിൽക്കുന്നു. രണ്ട് പകർപ്പുകളും വേർതിരിയുന്നിടം Authority Key Identifier ആണ്, കാരണം അത് കീ ഐഡന്റിഫയറും ഇഷ്യൂവർ സർട്ടിഫിക്കറ്റും സീരിയൽ നമ്പറും വഹിക്കാം. കീ ഒരുപോലെയായതിനാൽ കീ ഐഡന്റിഫയർ രണ്ട് പകർപ്പുകളുമായും ഒത്തുപോകുന്നു. ഇഷ്യൂവർ, സീരിയൽ ഫീൽഡുകൾ കൃത്യമായി ഒന്നുമായി മാത്രം ഒത്തുപോകുന്നു, അതുകൊണ്ട് സ്വയം-സൈൻ പകർപ്പിനെതിരെ നിർമ്മിക്കുന്ന ചെയിൻ ക്രോസ്-സൈൻ പകർപ്പിനെതിരെ പരാജയപ്പെടാം.

ഊഹിക്കാതെ ലീഫ് പരിശോധിക്കുക: openssl x509 -in server.pem -noout -ext authorityKeyIdentifier.

തുടർന്ന് രണ്ട് സ്ഥാനാർത്ഥികളെയും openssl x509 -in b-cross.pem -noout -text | grep -A2 "Authority Key Identifier" ഉപയോഗിച്ച് താരതമ്യം ചെയ്യുക, അതേ കമാൻഡ് സ്വയം-സൈൻ പകർപ്പിനെതിരെ പ്രവർത്തിപ്പിക്കുക.

ലീഫ് ഇഷ്യൂവറും സീരിയലും വഹിക്കുന്നുവെങ്കിൽ, ആ മൂല്യങ്ങൾ വിവരിക്കുന്ന സർട്ടിഫിക്കറ്റ് മാത്രമേ ചെയിൻ പൂർത്തിയാക്കൂ, ക്ലയന്റ് ഏത് പകർപ്പ് ലോഡ് ചെയ്താലും.

പരിശോധന 3: ഇഷ്യൂയിംഗ് പോളിസി മാറ്റുക, സൈൻ ചെയ്ത ബൈറ്റുകൾ ഒരിക്കലുമല്ല

എക്സ്റ്റെൻഷനുകൾ സിഗ്നേച്ചറിനുള്ളിൽ ജീവിക്കുന്നു. നിലവിലുള്ള ഒരു ലീഫിൽ ഒന്ന് ചേർക്കുകയോ നീക്കുകയോ തിരുത്തുകയോ ചെയ്യുന്നത് നന്നാക്കലല്ല, അത് വേറെ സർട്ടിഫിക്കറ്റാണ്, പുനരിഷ്യൂ ആവശ്യമാണ്. മാറ്റം ഇഷ്യൂയിംഗ് പോളിസിയിലാണ്: authorityKeyIdentifier = keyid,issuer:always പുതിയ ലീഫുകൾക്ക് സർട്ടിഫിക്കറ്റ്-നിർദ്ദിഷ്ട ബൈൻഡിംഗ് നൽകുന്നു, അതേസമയം keyid മാത്രമായാൽ ബോധപൂർവമായ ക്രോസ്-സൈനിംഗ് മാറ്റത്തിന് യോജിക്കുന്ന അയഞ്ഞ രൂപം നിലനിർത്തുന്നു. അടുത്ത ബാച്ച് സൈൻ ചെയ്യുന്നതിന് മുമ്പ് നിങ്ങളുടെ PKI ഏതാണ് ആഗ്രഹിക്കുന്നതെന്ന് തീരുമാനിക്കുക.

പങ്കിട്ട ടെംപ്ലേറ്റ് തിരുത്തുന്നത് നിങ്ങളുടെ മുന്നിലുള്ള സെർവർ മാത്രമല്ല, എല്ലാ ഭാവി സർട്ടിഫിക്കറ്റുകളെയും മാറ്റുന്നു.

പരിശോധന 4: ഓരോ വിശ്വാസ ജനസംഖ്യയും വെവ്വേറെ പരിശോധിക്കുക

പഴയ പാതയും പുതിയ പാതയും വെവ്വേറെ റണ്ണുകളായി പരീക്ഷിക്കുക. openssl verify -purpose sslserver -verify_hostname vpn.example -CAfile old-root.pem -untrusted b-cross-signed.pem server.pem ക്രോസ്-സൈൻ പാത പരിശീലിപ്പിക്കുന്നു, പുതിയ റൂട്ടും untrusted ഫയലുമില്ലാത്ത അതേ കമാൻഡ് സ്വയം-സൈൻ പാത പരിശീലിപ്പിക്കുന്നു. രണ്ട് റൂട്ടുകളും ഒരു ബണ്ടിലിൽ കലർത്തുന്നത് ഏത് ചെയിൻ തിരഞ്ഞെടുത്തുവെന്ന് മറയ്ക്കുന്നു. അതിനുശേഷം യഥാർത്ഥ ക്ലയന്റുകളുമായി ആവർത്തിക്കുക, കാരണം ഒരു VPN ബാക്ക്എൻഡ് ഒരു ചെയിനിന് മുൻഗണന നൽകാം അല്ലെങ്കിൽ ഒരു സർട്ടിഫിക്കറ്റ് പിൻ ചെയ്യാം openssl ചെയ്യാത്ത രീതികളിൽ.

ഇന്റർമീഡിയറ്റ് സർട്ടിഫിക്കറ്റ് ക്ലയന്റ് യഥാർത്ഥത്തിൽ വായിക്കുന്ന സേവന കോൺഫിഗറേഷനിലൂടെ നൽകുക, വിക്കി പേജിലൂടെയല്ല.

പരിശോധന 5: പഴയ പാതയെ വിരമിക്കൽ ക്ലോക്കിൽ നിർത്തുക

ക്രോസ്-സൈനിംഗ് രൂപകൽപ്പനയനുസരിച്ച് പഴയ വിശ്വാസ പാതയെ ജീവനോടെ നിർത്തുന്നു, അത് ഒരേസമയം ലക്ഷ്യവും അപകടവുമാണ്. അത് വിട്ടുവീഴ്ച ചെയ്ത പഴയ റൂട്ട് പരിഹരിക്കുന്നില്ല, ആ റൂട്ട് ഏതെങ്കിലും ക്ലയന്റിൽ നിന്ന് നീക്കുന്നുമില്ല. പഴയ പാത എപ്പോൾ വിശ്വാസം നൽകുന്നത് നിർത്തുമെന്ന് എഴുതുക, ആ ദിവസം യഥാർത്ഥത്തിൽ വരുന്നുവെന്ന് ഉറപ്പാക്കുക.

ഇലകൾ നീങ്ങുന്നതിന് മുമ്പ് എല്ലാ ക്ലയന്റിനും പുതിയ റൂട്ട് സ്വീകരിക്കാനാകുമെങ്കിൽ, ലളിതമായ ഇരട്ട-വിശ്വാസ റോൾഔട്ട് ക്രോസ്-സൈനിംഗിനേക്കാൾ എളുപ്പമാണ്, വിരമിപ്പിക്കാൻ ഒരു കാര്യം കുറവ് വെക്കുന്നു.

അനുബന്ധ ലേഖനങ്ങൾ