SSL جاري ڪرڻ جي آٽوميشن ڏانهن

گهڻو ڪري اسان کي SSL سرٽيفڪيٽ سان ڪم ڪرڻو پوندو. اچو ته هڪ سرٽيفڪيٽ ٺاهڻ ۽ انسٽال ڪرڻ جي عمل کي ياد رکون (عام صورت ۾ اڪثر لاء).

  • هڪ مهيا ڪندڙ ڳوليو (هڪ سائيٽ جتي اسان SSL خريد ڪري سگهون ٿا).
  • CSR ٺاھيو.
  • اهو توهان جي فراهم ڪندڙ ڏانهن موڪليو.
  • ڊومين جي ملڪيت جي تصديق ڪريو.
  • سرٽيفڪيٽ حاصل ڪريو.
  • سرٽيفڪيٽ کي گهربل فارم ۾ تبديل ڪريو (اختياري). مثال طور، پي ايم کان PKCS #12 تائين.
  • ويب سرور تي سرٽيفڪيٽ انسٽال ڪريو.

نسبتا تيز، پيچيده ۽ سمجھڻ وارو نه. هي اختيار ڪافي مناسب آهي جيڪڏهن اسان وٽ وڌ ۾ وڌ ڏهه منصوبا آهن. ڇا جيڪڏھن انھن مان وڌيڪ آھن، ۽ اھي گھٽ ۾ گھٽ ٽي ماحول آھن؟ کلاسک ديو - اسٽيجنگ - پيداوار. انهي حالت ۾، اهو سوچڻ جي قابل آهي ته هن عمل کي خودڪار ڪرڻ بابت. مان تجويز ڪريان ٿو ته مسئلي کي ٿورو وڌيڪ ڳولھيو ۽ ھڪڙو حل ڳولھيو جيڪو سرٽيفڪيٽ ٺاھڻ ۽ برقرار رکڻ تي خرچ ٿيل وقت کي وڌيڪ گھٽائي ڇڏيندو. مضمون ۾ مسئلو جو تجزيو ۽ ورجائڻ لاءِ هڪ ننڍڙو گائيڊ هوندو.

مون کي اڳ ۾ هڪ رزرويشن ڪرڻ ڏيو: اسان جي ڪمپني جي مکيه specialization آهي .net، ۽ ان جي مطابق IIS ۽ ٻين ونڊوز سان لاڳاپيل مصنوعات. تنهن ڪري، ACME ڪلائنٽ ۽ ان لاءِ سڀئي ڪارناما پڻ بيان ڪيا ويندا ونڊوز استعمال ڪرڻ جي نقطي نظر کان.

جن لاءِ هي لاڳاپيل ۽ ڪجهه ابتدائي ڊيٽا آهي

ڪمپني K جي نمائندگي ڪندڙ ليکڪ طرفان. URL (مثال طور): company.tld

پروجيڪٽ ايڪس اسان جي منصوبن مان هڪ آهي، جنهن تي ڪم ڪرڻ دوران مان ان نتيجي تي پهتو آهيان ته اسان کي اڃا به وڌيڪ وقت جي بچت ڏانهن وڌڻو پوندو جڏهن سرٽيفڪيٽن سان ڪم ڪيو وڃي. ھن پروجيڪٽ ۾ چار ماحول آھن: ديو، ٽيسٽ، اسٽيجنگ ۽ پيداوار. ديو ۽ ٽيسٽ اسان جي پاسي تي آهن، اسٽيجنگ ۽ پيداوار ڪلائنٽ جي پاسي تي آهن.

پروجيڪٽ جي هڪ خاص خصوصيت اها آهي ته ان ۾ ماڊلز جو هڪ وڏو تعداد موجود آهي جيڪي ذيلي ڊومينز طور موجود آهن.

اهو آهي، اسان وٽ هيٺ ڏنل تصوير آهي:

ديو
امتحان
اسٽوريج
پيداوار

projectX.dev.company.tld
projectX.test.company.tld
staging.projectX.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 سرٽيفڪيٽن جي وڌ ۾ وڌ صحيح مدت گھٽائي. سڀني نتيجن سان.
  • منصوبن جي اندروني ضرورتن ۽ مجموعي طور تي ڪمپني جي لاءِ SSL جاري ڪرڻ ۽ برقرار رکڻ جي عمل کي آسان بڻائي.
  • سرٽيفڪيٽ رڪارڊز جو مرڪزي اسٽوريج، جيڪو جزوي طور حل ڪري ٿو ڊومين جي تصديق جو مسئلو DNS استعمال ڪندي ۽ بعد ۾ خودڪار تجديد، ۽ پڻ حل ڪري ٿو ڪلائنٽ جي اعتماد جو مسئلو. اڃا، هڪ پارٽنر/پرفارمر ڪمپني جي سرور تي هڪ CNAME ٽئين پارٽي جي وسيلن جي ڀيٽ ۾ وڌيڪ قابل اعتماد آهي.
  • خير، آخرڪار، هن معاملي ۾ جملي "نه هجڻ کان بهتر آهي" بلڪل صحيح آهي.

هڪ SSL فراهم ڪندڙ کي چونڊڻ ۽ تياري جا مرحلا

مفت SSL سرٽيفڪيٽن جي دستياب اختيارن ۾، ڪلائوڊ فليئر ۽ letsencrypt سمجهيا ويا. DNS هن لاءِ (۽ ڪجهه ٻيا منصوبا) ڪلائوڊ فليئر طرفان ميزباني ڪئي وئي آهي، پر مان انهن جي سرٽيفڪيٽن کي استعمال ڪرڻ جو پرستار نه آهيان. تنهن ڪري، اهو letsencrypt استعمال ڪرڻ جو فيصلو ڪيو ويو.
وائلڊ ڪارڊ SSL سرٽيفڪيٽ ٺاهڻ لاءِ، توهان کي ڊومين جي ملڪيت جي تصديق ڪرڻي پوندي. ھن عمل ۾ شامل آھي ڪجھ DNS رڪارڊ (TXT يا CNAME) ٺاھڻ، ۽ پوءِ ان جي تصديق ڪرڻ جڏھن ھڪ سرٽيفڪيٽ جاري ڪيو وڃي. لينڪس وٽ هڪ افاديت آهي - سرٽيبٽ، جيڪو توهان کي جزوي طور تي (يا مڪمل طور تي ڪجهه DNS فراهم ڪندڙن لاءِ) هن عمل کي خودڪار ڪرڻ جي اجازت ڏئي ٿو. ونڊوز لاءِ مليو ۽ تصديق ٿيل ACME ڪلائنٽ جا اختيار جن تي مون آباد ڪيو WinACME.

۽ ڊومين لاءِ رڪارڊ ٺاهيو ويو آهي، اچو ته هڪ سرٽيفڪيٽ ٺاهڻ لاءِ اڳتي وڌون:

SSL جاري ڪرڻ جي آٽوميشن ڏانهن

اسان آخري نتيجي ۾ دلچسپي رکون ٿا، يعني، وائلڊ ڪارڊ سرٽيفڪيٽ جاري ڪرڻ لاءِ ڊومين جي ملڪيت جي تصديق لاءِ موجود اختيارن:

  1. دستي طور تي ڊي اين ايس رڪارڊ ٺاهيو (خودڪار اپڊيٽ سپورٽ نه آهي)
  2. Acme-dns سرور استعمال ڪندي DNS رڪارڊ ٺاهڻ (توهان وڌيڪ پڙهي سگهو ٿا هتي.
  3. توهان جي پنهنجي اسڪرپٽ استعمال ڪندي ڊي اين ايس رڪارڊ ٺاهڻ (ساڳئي طرح ڪلائوڊ فليئر پلگ ان certbot لاءِ).

پهرين نظر ۾، ٽيون نقطو بلڪل موزون آهي، پر ڇا جيڪڏهن 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 سرور کي ترتيب ڏيڻ ۽ لانچ ڪرڻ لاء اڳتي وڌو. اهو منهنجي ubuntu سرور تي رهندو گھڻي ڪنٽينر، پر توهان ان کي ڪٿي به هلائي سگهو ٿا جتي گولانگ موجود آهي. ونڊوز پڻ ڪافي موزون آهي، پر مان اڃا تائين لينڪس سرور کي ترجيح ڏيان ٿو.

ضروري ڊائريڪٽري ۽ فائلون ٺاهيو:

$ 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"
…

انهي سان گڏ، جيڪڏهن گهربل هجي، اسان مکيه سروس ڊاريڪٽري ۾ هڪ ڊاکر-compose فائل ٺاهينداسين:

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

تبصرو شامل ڪريو