Certbot-ը հաղորդում է հաջող թարմացում, սկավառակի ֆայլերը կրում են նոր ամսաթվեր, և հաճախորդները դեռ հանդիպում են հին ինքնությանը։ SoftEther-ը պահում է իր SSL սերվերի վկայագիրը իր իսկ սերվերային մակարդակի կարգավորումներում, այնպես որ սկավառակի նոր ֆայլը ոչինչ չի փոխում, քանի դեռ տերևը և դրա բանալին ներմուծված չեն։ Ստորև բերված հաջորդականությունը ներառում է մեկ ձեռքով ներմուծում, փաթաթիչ, որն աշխատում է յուրաքանչյուր թարմացումից հետո, և ստուգում, որը կարդում է, թե լսողն իրականում ինչ է ներկայացնում։ Յուրաքանչյուր քայլ թողնում է ապացույցներ, որոնք կարող եք համեմատել հաջորդ թարմացումից հետո։

Թարմացված ֆայլը չի փոխում սերվերի ինքնությունը

Թողարկումը և տեղակայումը առանձին իրադարձություններ են՝ առանձին խափանման եղանակներով։ ACME հաճախորդը ֆայլերը գրում է ծագման գրացուցակում և գրանցում հաջողությունը. SoftEther-ը շարունակում է օգտագործել այն վկայագիրը, որը վերջին անգամ բեռնվել է իր կարգավորումներում։ Այսպիսով, զրո ելքի կարգավիճակը նկարագրում է ֆայլերը, ոչ թե ծառայությունը, և այդ երկուսը կարող են տարբերվել այնքան ժամանակ, քանի դեռ ոչ ոք չի նայում։ Վերաբերվեք ներմուծմանը որպես տեղակայման քայլի, իսկ թարմացմանը՝ որպես դրա մուտքի։

Այդ տարբերությունը բացատրում է նաև շփոթեցնող կիսախափանումը. հին վկայագիրը շարունակում է աշխատել մինչև դրա ժամկետի ավարտը, այնպես որ սկզբում ոչինչ կոտրված չի թվում։ Երբ այն լրանում է, բոլոր հաճախորդները ձախողվում են միաժամանակ, ինչը նման է ընդհատման, այլ ոչ թե բաց թողնված տեղակայման քայլի։ Յուրաքանչյուր թարմացումից հետո ներկայացված ինքնության ստուգումը այդ անակնկալը վերածում է սովորական դիտարկման։

Ընտրեք լսողին համապատասխան մարտահրավերը

Վկայագիրը պետք է նշի այն հոսթը, որը ստուգում են հաճախորդները, ուստի օգտագործեք հանրային DNS անունը, այլ ոչ թե ներքին պիտակ կամ հասցե։ HTTP-01-ը պահանջում է, որ մարտահրավերին մի պահ պատասխանվի 80 պորտում, ինչը ժամանակավոր լսող է և երբեք պատճառ չէ տեղափոխելու SoftEther-ի սեփական պորտը։ DNS-01-ը ապացուցում է վերահսկողությունը գրառման միջոցով և ընդհանրապես մուտքային HTTP չի պահանջում։

Առանց հսկողության թարմացումը նշանակում է ավտոմատացված DNS ինտեգրում մեկ գոտով սահմանափակված հավատարմագրերով, այլ ոչ թե ձեռքով մուտքագրվող TXT գրառում ամեն երկու ամիսը մեկ։ Վայրի քարտը փոխում է մարտահրավերի տեսակը, ոչ թե այդ ավտոմատացման անհրաժեշտությունը։ Սա որոշեք մինչև առաջին վկայագրի գոյությունը, քանի որ մարտահրավերի տեսակը ավելի ուշ փոխելը նշանակում է միաժամանակ դիպչել հաճախորդի կարգավորումներին և հրապատին։

Արտեֆակտները կարգին պահեք, քանի դեռ այստեղ եք։ Տերևը և միջանկյալները գալիս են առանձին ֆայլերով և որպես մեկ միացյալ շղթայի ֆայլ, մասնավոր բանալին կրկին առանձին է, և ներմուծմանը պետք է շղթան իր համապատասխան բանալիով, այլ ոչ թե հանրային վկայագիր առանձին։

Ներմուծեք շղթան սերվերային մակարդակում

Կատարեք սերվերի կարգավորումների պահուստավորում և հաստատեք, որ դեռ կարող եք հասնել կառավարման ինտերֆեյսին, նախքան վկայագրին դիպչելը։ Միացեք որպես սերվերի ադմինիստրատոր, ոչ թե Virtual Hub-ի ադմինիստրատոր, քանի որ վկայագիրը պատկանում է սերվերի օբյեկտին։ Այնուհետև բեռնեք շղթան և բանալին բացարձակ ուղով, ֆայլերից, որոնք հրամանը գործարկող հաշիվը կարող է կարդալ։ Նկատեք, որ ուղիները բացարձակ են, քանի որ հրամանը դրանք լուծում է vpncmd-ը գործարկած գործընթացի աշխատանքային գրացուցակից.

ServerCertSet /LOADCERT:/etc/letsencrypt/live/vpn.example.com/fullchain.pem /LOADKEY:/etc/letsencrypt/live/vpn.example.com/privkey.pem

Կարդացեք հրամանի ելքը՝ հաջողությունը ենթադրելու փոխարեն, այնուհետև կրկին կարդացեք շղթան՝ ձեր տված ֆայլին վստահելու փոխարեն։ Ամբողջ PEM փաթեթը ներմուծող կառուցումների և միայն առաջին վկայագիրը վերցնող կառուցումների միջև սահմանը մեկ տեղում փաստաթղթավորված չէ, ուստի ստուգումն է, որ լուծում է այն ձեր առջևի կառուցման համար։ Հաշվեք լսողի ներկայացրած վկայագրերը. միջանկյալներից զուրկ տերևը միայն առաջին բլոկը սպառած ներմուծողի ստորագրությունն է։

Ներմուծված բանալին ընթեռնելի պահեք միայն սերվերը գործարկող հաշվի համար, և կառավարման գաղտնաբառը պահեք shell-ի պատմությունից դուրս։ Այս առաջին ներմուծման ժամանակ գաղտնաբառը մուտքագրեք հուշման մեջ՝ այն որպես հրամանի արգումենտ փոխանցելու փոխարեն։ Այս երկու սովորությունները ոչինչ չեն արժեն և վերացնում են վկայագրի տեղակայման արտահոսքի ամենատարածված եղանակը՝ այն բանի, ինչ պետք է պաշտպաներ։ Դա արեք առաջին ներմուծումից առաջ, ոչ թե հետո։

Կապեք տեղակայումը, ոչ թե թարմացումը

Երբ ձեռքով ներմուծումն աշխատի, դրեք հենց այդ քայլերը փոքր փաթաթիչի մեջ և կանչեք այն ACME հաճախորդից հաջող թարմացումից հետո։ Certbot-ը կարգավորում է RENEWED_LINEAGE և RENEWED_DOMAINS փոփոխականները կեռիկի համար, ուստի փաթաթիչը կարող է գործել մեկ վկայագրի վրա մի մեքենայում, որը կառավարում է մի քանիսը։ Զտեք ըստ ծագման՝ հոսթի յուրաքանչյուր թարմացման արձագանքելու փոխարեն։ Փաթաթիչը տեղակայման կոդ է, որն աշխատում է սերվերի արտոնություններով, ուստի վերանայեք այն ինչպես այդ դիրքում գտնվող ցանկացած այլ սկրիպտ։

certbot renew --deploy-hook /usr/local/sbin/softether-deploy.sh

Առանց հսկողության աշխատող կեռիկը կարիք ունի իր սեփական պաշտպանված հավատարմագրերի պահոցին և մարդուն հասնող խափանման ազդանշանի։ Եթե թողարկումը հաջողվի, իսկ ներմուծումը ձախողվի, կրկնեք ներմուծումը՝ այլ վկայագիր խնդրելու փոխարեն, քանի որ երկրորդ հայտը թաքցնում է տեղակայման թերությունը նոր ֆայլի հետևում։ Certbot-ի թարմացման փաստաթղթերը հստակ ասում են, որ ոչինչ չթարմացնող գործարկումը նորմալ արդյունք է, ուստի կեռիկն է, որ տարբերում է երկուսը։

Համեմատեք ներկայացված շղթան ֆայլի հետ

Կարդացեք լսողը, ոչ թե սկավառակը։ Միացեք հաճախորդներին ուղղված պորտին այն սերվերի անունով, որն օգտագործում են հաճախորդները, ապա համեմատեք մատնահետքը և հանձնված շղթան կեռիկի տեղադրած ծագման հետ։ Երկու հրաման ծածկում է դա, և առաջինը նաև ցույց է տալիս, թե արդյոք միջանկյալները ընդհանրապես գալիս են.

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts </dev/null 2>/dev/null | grep -c 'BEGIN CERTIFICATE'
openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -dates -fingerprint -sha256

Ապա ստեղծեք նոր հաճախորդային կապ, քանի որ ներմուծումից առաջ հաստատված սեսիաները նույնականացվել են նախորդ ինքնության դեմ և ոչինչ չեն ապացուցում նորի մասին։ Եթե հաճախորդները ամրացնում են հին տերևը, նրանք կարիք ունեն համակարգված թարմացման նույնիսկ այն դեպքում, երբ հանրային շղթան վավեր է, և այդ խնդիրը պատկանում է նույն runbook-ին, ինչ թարմացումը։ Ծառայության առջևի հակադարձ պրոքսին կարող է լավ վկայագիր ներկայացնել, մինչ VPN լսողը դեռ պահում է հինը, և դրա համար է, որ ստուգումը պետք է անվանի այն պորտը, որին հաճախորդները իրականում հասնում են։ Գրանցեք մատնահետքը թարմացման ամսաթվի կողքին, որպեսզի հաջորդ համեմատությունը ստուգում լինի, ոչ թե հիշողության գործողություն։

Առնչվող հոդվածներ