SSL జారీ ఆటోమేషన్ వైపు

చాలా తరచుగా మేము SSL ప్రమాణపత్రాలతో పని చేయాలి. సర్టిఫికేట్‌ను సృష్టించే మరియు ఇన్‌స్టాల్ చేసే ప్రక్రియను గుర్తుంచుకోండి (చాలామందికి సాధారణ సందర్భంలో).

  • ప్రొవైడర్‌ను కనుగొనండి (మేము SSLని కొనుగోలు చేయగల సైట్).
  • CSRని రూపొందించండి.
  • దీన్ని మీ ప్రొవైడర్‌కు పంపండి.
  • డొమైన్ యాజమాన్యాన్ని ధృవీకరించండి.
  • సర్టిఫికేట్ పొందండి.
  • సర్టిఫికేట్‌ను అవసరమైన ఫారమ్‌కి మార్చండి (ఐచ్ఛికం). ఉదాహరణకు, పెమ్ నుండి PKCS #12 వరకు.
  • వెబ్ సర్వర్‌లో ప్రమాణపత్రాన్ని ఇన్‌స్టాల్ చేయండి.

సాపేక్షంగా వేగంగా, సంక్లిష్టంగా మరియు అర్థమయ్యేలా కాదు. మేము గరిష్టంగా పది ప్రాజెక్ట్‌లను కలిగి ఉంటే ఈ ఎంపిక చాలా అనుకూలంగా ఉంటుంది. వాటిలో ఎక్కువ ఉంటే, మరియు వారికి కనీసం మూడు వాతావరణాలు ఉంటే? క్లాసిక్ దేవ్ - స్టేజింగ్ - ప్రొడక్షన్. ఈ సందర్భంలో, ఈ ప్రక్రియను ఆటోమేట్ చేయడం గురించి ఆలోచించడం విలువ. నేను సమస్యను కొంచెం లోతుగా పరిశోధించి, సర్టిఫికేట్‌లను రూపొందించడానికి మరియు నిర్వహించడానికి వెచ్చించే సమయాన్ని మరింత తగ్గించే పరిష్కారాన్ని కనుగొనాలని ప్రతిపాదిస్తున్నాను. వ్యాసంలో సమస్య యొక్క విశ్లేషణ మరియు పునరావృతానికి చిన్న గైడ్ ఉంటుంది.

నేను ముందుగానే రిజర్వేషన్ చేయనివ్వండి: మా కంపెనీ యొక్క ప్రధాన స్పెషలైజేషన్ .net, మరియు, తదనుగుణంగా, IIS మరియు ఇతర Windows సంబంధిత ఉత్పత్తులు. అందువల్ల, ACME క్లయింట్ మరియు దాని కోసం అన్ని చర్యలు కూడా Windows ను ఉపయోగించే కోణం నుండి వివరించబడతాయి.

ఇది ఎవరికి సంబంధించినది మరియు కొంత ప్రారంభ డేటా

రచయిత ప్రాతినిధ్యం వహించిన కంపెనీ K. URL (ఉదాహరణకు): company.tld

ప్రాజెక్ట్ X అనేది మా ప్రాజెక్ట్‌లలో ఒకటి, దానిపై పని చేస్తున్నప్పుడు నేను సర్టిఫికేట్‌లతో పని చేస్తున్నప్పుడు గరిష్ట సమయం ఆదా చేసే దిశగా వెళ్లాలని నేను నిర్ణయానికి వచ్చాను. ఈ ప్రాజెక్ట్ నాలుగు వాతావరణాలను కలిగి ఉంది: దేవ్, టెస్ట్, స్టేజింగ్ మరియు ప్రొడక్షన్. దేవ్ మరియు టెస్ట్ మా వైపు ఉన్నాయి, స్టేజింగ్ మరియు ప్రొడక్షన్ క్లయింట్ వైపు ఉన్నాయి.

ప్రాజెక్ట్ యొక్క ప్రత్యేక లక్షణం ఏమిటంటే ఇది సబ్‌డొమైన్‌లుగా అందుబాటులో ఉన్న పెద్ద సంఖ్యలో మాడ్యూల్‌లను కలిగి ఉంది.

అంటే, మనకు ఈ క్రింది చిత్రం ఉంది:

దేవ్
పరీక్ష
స్టేజింగ్
ఉత్పత్తి

projectX.dev.company.tld
projectX.test.company.tld
స్టేజింగ్.ప్రాజెక్ట్X.tld
ప్రాజెక్ట్X.tld

module1.projectX.dev.company.tld
module1.projectX.test.company.tld
module1.staging.projectX.tld
module1.projectX.tld

module2.projectX.dev.company.tld
module2.projectX.test.company.tld
module2.staging.projectX.tld
module2.projectX.tld

...
...
...
...

moduleN.projectX.dev.company.tld
moduleN.projectX.test.company.tld
moduleN.staging.projectX.tld
moduleN.projectX.tld

ఉత్పత్తి కోసం, కొనుగోలు చేసిన వైల్డ్‌కార్డ్ సర్టిఫికేట్ ఉపయోగించబడుతుంది, ఇక్కడ ఎటువంటి ప్రశ్నలు తలెత్తవు. కానీ ఇది సబ్డొమైన్ యొక్క మొదటి స్థాయిని మాత్రమే కవర్ చేస్తుంది. దీని ప్రకారం, *.projectX.tld కోసం సర్టిఫికేట్ ఉంటే, అది staging.projectX.tld కోసం పని చేస్తుంది, కానీ module1.staging.projectX.tld కోసం కాదు. కానీ ఏదో ఒకవిధంగా నేను విడిగా కొనాలనుకోవడం లేదు.

మరియు ఇది ఒక కంపెనీ యొక్క ఒక ప్రాజెక్ట్ యొక్క ఉదాహరణపై మాత్రమే ఆధారపడి ఉంటుంది. మరియు, వాస్తవానికి, ఒకటి కంటే ఎక్కువ ప్రాజెక్ట్‌లు ఉన్నాయి.

ఈ సమస్యను పరిష్కరించడానికి ప్రతి ఒక్కరికీ సాధారణ కారణాలు ఇలా కనిపిస్తాయి:

  • ఇటీవల SSL సర్టిఫికెట్ల గరిష్ట చెల్లుబాటు వ్యవధిని తగ్గించాలని Google ప్రతిపాదించింది. అన్ని పరిణామాలతో.
  • ప్రాజెక్ట్‌లు మరియు మొత్తం సంస్థ యొక్క అంతర్గత అవసరాల కోసం SSL జారీ మరియు నిర్వహణ ప్రక్రియను సులభతరం చేయండి.
  • సర్టిఫికేట్ రికార్డుల కేంద్రీకృత నిల్వ, ఇది DNS మరియు తదుపరి స్వయంచాలక పునరుద్ధరణను ఉపయోగించి డొమైన్ ధృవీకరణ సమస్యను పాక్షికంగా పరిష్కరిస్తుంది మరియు క్లయింట్ ట్రస్ట్ సమస్యను కూడా పరిష్కరిస్తుంది. అయినప్పటికీ, మూడవ పక్ష వనరు కంటే భాగస్వామి/పెర్ఫార్మర్ కంపెనీ సర్వర్‌లోని CNAME మరింత నమ్మదగినది.
  • బాగా, చివరగా, ఈ సందర్భంలో "ఉండకుండా ఉండటం కంటే కలిగి ఉండటం మంచిది" అనే పదబంధం ఖచ్చితంగా సరిపోతుంది.

SSL ప్రొవైడర్‌ను ఎంచుకోవడం మరియు ప్రిపరేటరీ దశలు

ఉచిత SSL ప్రమాణపత్రాల కోసం అందుబాటులో ఉన్న ఎంపికలలో, cloudflare మరియు letsencrypt పరిగణించబడ్డాయి. దీని కోసం DNS (మరియు కొన్ని ఇతర ప్రాజెక్ట్‌లు) క్లౌడ్‌ఫ్లేర్ ద్వారా హోస్ట్ చేయబడింది, కానీ నేను వారి సర్టిఫికేట్‌లను ఉపయోగించడానికి అభిమానిని కాదు. అందువలన, letsencrypt ఉపయోగించాలని నిర్ణయించారు.
వైల్డ్‌కార్డ్ SSL ప్రమాణపత్రాన్ని సృష్టించడానికి, మీరు డొమైన్ యాజమాన్యాన్ని నిర్ధారించాలి. ఈ విధానంలో కొంత DNS రికార్డ్‌ను (TXT లేదా CNAME) సృష్టించి, సర్టిఫికెట్‌ను జారీ చేసేటప్పుడు దాన్ని ధృవీకరించడం ఉంటుంది. Linux ఒక యుటిలిటీని కలిగి ఉంది - certbot, ఇది పాక్షికంగా (లేదా కొంతమంది DNS ప్రొవైడర్ల కోసం పూర్తిగా) ఈ ప్రక్రియను ఆటోమేట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. నుండి Windows కోసం కనుగొనబడింది మరియు ధృవీకరించబడింది నేను స్థిరపడిన ACME క్లయింట్ ఎంపికలు WinACME.

మరియు డొమైన్ కోసం రికార్డ్ సృష్టించబడింది, సర్టిఫికేట్‌ను రూపొందించడానికి వెళ్దాం:

SSL జారీ ఆటోమేషన్ వైపు

వైల్డ్‌కార్డ్ సర్టిఫికేట్‌ను జారీ చేయడం కోసం డొమైన్ యాజమాన్యాన్ని నిర్ధారించడానికి అందుబాటులో ఉన్న ఎంపికలు అనే చివరి ముగింపుపై మాకు ఆసక్తి ఉంది:

  1. DNS రికార్డులను మాన్యువల్‌గా సృష్టించండి (ఆటోమేటిక్ అప్‌డేట్‌కు మద్దతు లేదు)
  2. acme-dns సర్వర్‌ని ఉపయోగించి DNS రికార్డులను సృష్టించడం (మీరు దీని గురించి మరింత చదవగలరు ఇక్కడ.
  3. మీ స్వంత స్క్రిప్ట్‌ను ఉపయోగించి DNS రికార్డ్‌లను సృష్టించడం (సర్ట్‌బాట్ కోసం క్లౌడ్‌ఫ్లేర్ ప్లగ్ఇన్ మాదిరిగానే).

మొదటి చూపులో, మూడవ పాయింట్ చాలా అనుకూలంగా ఉంటుంది, అయితే DNS ప్రొవైడర్ ఈ కార్యాచరణకు మద్దతు ఇవ్వకపోతే? కానీ మాకు సాధారణ కేసు అవసరం. కానీ సాధారణ కేసు CNAME రికార్డ్‌లు, ఎందుకంటే అందరూ వాటికి మద్దతు ఇస్తున్నారు. కాబట్టి, మేము పాయింట్ 2 వద్ద ఆపి, మా ACME-DNS సర్వర్‌ని కాన్ఫిగర్ చేయడానికి వెళ్తాము.

ACME-DNS సర్వర్ మరియు సర్టిఫికేట్ జారీ ప్రక్రియను సెటప్ చేస్తోంది

ఉదాహరణకు, నేను 2nd.pp.ua డొమైన్‌ని సృష్టించాను మరియు భవిష్యత్తులో దాన్ని ఉపయోగిస్తాను.

తప్పనిసరి అవసరం సర్వర్ సరిగ్గా పని చేయడానికి, దాని డొమైన్ కోసం NS మరియు A రికార్డులను సృష్టించడం అవసరం. మరియు నేను ఎదుర్కొన్న మొదటి అసహ్యకరమైన క్షణం ఏమిటంటే, క్లౌడ్‌ఫ్లేర్ (కనీసం ఉచిత వినియోగ మోడ్‌లో) ఒకే హోస్ట్ కోసం ఏకకాలంలో NS మరియు A రికార్డ్‌ను సృష్టించడానికి మిమ్మల్ని అనుమతించదు. ఇది సమస్య అని కాదు, కానీ బైండ్‌లో ఇది సాధ్యమే. తమ ప్యానెల్ దీన్ని చేయడానికి అనుమతించదని మద్దతు తెలిపింది. ఫర్వాలేదు, రెండు రికార్డ్‌లను క్రియేట్ చేద్దాం:

acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.

ఈ దశలో, మా హోస్ట్ పరిష్కరించాలి acmens.2nd.pp.ua.

$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of data

మరియు ఇక్కడ acme.2nd.pp.ua ఇది పరిష్కరించబడదు, ఎందుకంటే దానిని అందించే DNS సర్వర్ ఇంకా అమలులో లేదు.

రికార్డులు సృష్టించబడ్డాయి, మేము ACME-DNS సర్వర్‌ను సెటప్ చేయడానికి మరియు ప్రారంభించడాన్ని కొనసాగిస్తాము. ఇది నా ఉబుంటు సర్వర్‌లో ప్రత్యక్షమవుతుంది డాకర్ కంటైనర్, కానీ మీరు గోలాంగ్ అందుబాటులో ఉన్న ఎక్కడైనా దీన్ని అమలు చేయవచ్చు. Windows కూడా చాలా సరిఅయినది, కానీ నేను ఇప్పటికీ Linux సర్వర్‌ని ఇష్టపడతాను.

అవసరమైన డైరెక్టరీలు మరియు ఫైల్‌లను సృష్టించండి:

$ mkdir config
$ mkdir data
$ touch config/config.cfg

మీకు ఇష్టమైన టెక్స్ట్ ఎడిటర్‌తో vimని ఉపయోగిస్తాము మరియు నమూనాను config.cfgలో అతికించండి ఆకృతీకరణ.

విజయవంతమైన ఆపరేషన్ కోసం, సాధారణ మరియు API విభాగాలను సరిచేయడానికి సరిపోతుంది:

[general]
listen = "0.0.0.0:53"
protocol = "both"
domain = "acme.2nd.pp.ua"
nsname = "acmens.2nd.pp.ua" 
nsadmin = "admin.2nd.pp.ua" 
records = 
    "acme.2nd.pp.ua. A 35.237.128.147",
    "acme.2nd.pp.ua. NS acmens.2nd.pp.ua.",                                                                                                                                                                                                  ]
...
[api]
...
tls = "letsencrypt"
…

అలాగే, కావాలనుకుంటే, మేము ప్రధాన సేవా డైరెక్టరీలో డాకర్-కంపోజ్ ఫైల్‌ను సృష్టిస్తాము:

version: '3.7'
services:
  acmedns:
    image: joohoi/acme-dns:latest
    ports:
      - "443:443"
      - "53:53"
      - "53:53/udp"
      - "80:80"
    volumes:
      - ./config:/etc/acme-dns:ro
      - ./data:/var/lib/acme-dns

సిద్ధంగా ఉంది. మీరు దీన్ని అమలు చేయవచ్చు.

$ docker-compose up -d

ఈ దశలో హోస్ట్ పరిష్కరించడం ప్రారంభించాలి acme.2nd.pp.ua, మరియు ఒక 404 కనిపిస్తుంది https://acme.2nd.pp.ua

$ ping acme.2nd.pp.ua
PING acme.2nd.pp.ua (35.237.128.147) 56(84) bytes of data.

$ curl https://acme.2nd.pp.ua
404 page not found

ఇది కనిపించకపోతే - docker logs -f <container_name> సహాయం చేయడానికి, అదృష్టవశాత్తూ, లాగ్‌లు చాలా చదవగలిగేవి.

మేము ప్రమాణపత్రాన్ని సృష్టించడం ప్రారంభించవచ్చు. పవర్‌షెల్‌ని అడ్మినిస్ట్రేటర్‌గా తెరిచి, Winacmeని అమలు చేయండి. ఎన్నికలపై మాకు ఆసక్తి ఉంది:

  • M: కొత్త ప్రమాణపత్రాన్ని సృష్టించండి (పూర్తి ఎంపికలు)
  • 2:మాన్యువల్ ఇన్‌పుట్
  • 2: [dns-01] acme-dnsతో ధృవీకరణ రికార్డులను సృష్టించండి (https://github.com/joohoi/acme-dns)
  • ACME-DNS సర్వర్‌కి లింక్ గురించి అడిగినప్పుడు, సమాధానంలో సృష్టించిన సర్వర్ (https) యొక్క URLని నమోదు చేయండి. acme-dns సర్వర్ యొక్క URL: https://acme.2nd.pp.ua

ఓపెనింగ్‌లో, క్లయింట్ ఇప్పటికే ఉన్న DNS సర్వర్‌కు జోడించాల్సిన రికార్డ్‌ను జారీ చేస్తుంది (వన్-టైమ్ విధానం):

[INFO] Creating new acme-dns registration for domain 1nd.pp.ua

Domain:              1nd.pp.ua
Record:               _acme-challenge.1nd.pp.ua
Type:                   CNAME
Content:              c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.
Note:                   Some DNS control panels add the final dot automatically.
                           Only one is required.

SSL జారీ ఆటోమేషన్ వైపు

మేము అవసరమైన రికార్డును సృష్టిస్తాము మరియు అది సరిగ్గా సృష్టించబడిందని నిర్ధారించుకోండి:

SSL జారీ ఆటోమేషన్ వైపు

$ dig CNAME _acme-challenge.1nd.pp.ua +short
c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.

మేము winacmeలో అవసరమైన ఎంట్రీని సృష్టించామని ధృవీకరిస్తాము మరియు ప్రమాణపత్రాన్ని సృష్టించే ప్రక్రియను కొనసాగిస్తాము:

SSL జారీ ఆటోమేషన్ వైపు

certbotని క్లయింట్‌గా ఎలా ఉపయోగించాలో వివరించబడింది ఇక్కడ.

ఇది సర్టిఫికేట్‌ను సృష్టించే ప్రక్రియను పూర్తి చేస్తుంది; మీరు దీన్ని వెబ్ సర్వర్‌లో ఇన్‌స్టాల్ చేసి ఉపయోగించవచ్చు. ఒకవేళ, సర్టిఫికేట్‌ను క్రియేట్ చేస్తున్నప్పుడు, మీరు షెడ్యూలర్‌లో టాస్క్‌ను కూడా సృష్టించినట్లయితే, భవిష్యత్తులో సర్టిఫికేట్ పునరుద్ధరణ ప్రక్రియ స్వయంచాలకంగా జరుగుతుంది.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి