[บทความ] การสร้าง SSL Certificate แบบ Wildcard ของ Let’s Encrypt และทดสอบติดตั้งใช้งานบน IIS

admin

Staff Member
Administrator
ปัจจุบันการทำธุรกรรมบนอินเตอร์เน็ต จำเป็นที่จะต้องมีการเข้ารหัสและถอดรหัสในการรับส่งข้อมูลเพื่อให้เกิดความปลอดภัยจากการดักจับและการเปลี่ยนแปลงแก้ไขข้อมูลระหว่างทางโดยผู้ที่ไม่หวังดี โดยในปัจจุบัน website ส่วนใหญ่นิยมใช้โปรโตคอล SSL/TLS โดยใช้ Certificate เป็นสื่อกลางในการกำหนดมาตรฐานความปลอดภัย และ Certificate ดังกล่าวจำเป็นที่จะต้องออกและตรวจสอบโดยองค์กรที่มีความน่าเชื่อถือและไว้ใจได้ (Trusted Certificate Authority)
ปกติองค์กรส่วนใหญ่จะซื้อ Certificate จากผู้ที่ให้บริการที่เรียกว่า Certificate Authority หรือ CA การซื้ออาจจะซื้อแบบ 1ปี , 3 ปี หรือ 5 ปี ขึ้นอยู่กับความต้องการและค่าใช้จ่าย.
แต่วันนี้เราจะมาสร้าง Free Certificate แบบ Wildcard (*.company.com) ที่ออกโดย Let’s Encrypt กันนะครับ โดยสามารถที่จะติดตั้ง Certificate นี้บนเครื่องใดก็ได้ ภายใต้ Sub-domain ของเรา และสำหรับวันนี้เราจะนำ Certificate ที่ได้ มาทดสอบติดตั้งบน IIS กันครับ
มาเริ่มกันเลยครับ
  • ทำการ dowload และติดตั้ง wget (หากใครสะดวกใช้ตัวอื่นที่เป็นเครื่องมือ download ไฟล์ก็ได้นะครับ)
[root@ZBXPROXY ~]# yum install wget Running transaction ...Installing : wget-1.14-15.el7_4.1.x86_64 1/1 Verifying : wget-1.14-15.el7_4.1.x86_64 1/1 Installed:wget.x86_64 0:1.14-15.el7_4.1 Complete!
[root@ZBXPROXY ~]# wget https://dl.eff.org/certbot-auto--2018-07-20 13:11:35-- https://dl.eff.org/certbot-autoResolving dl.eff.org (dl.eff.org)... 151.101.8.201, 2a04:4e42:2::201Connecting to dl.eff.org (dl.eff.org)|151.101.8.201|:443... connected.HTTP request sent, awaiting response... 200 OKLength: 62299 (61K) [application/octet-stream]Saving to: ‘certbot-auto’100%[==========================================================================================>] 62,299 --.-K/s in 0.07s 2018-07-20 13:11:35 (880 KB/s) - ‘certbot-auto’ saved [62299/62299]
  • หลังจาก download เรียบร้อยแล้ว ทำการปรับไฟล์ให้สามารถ execute ได้ โดยใช้คำสั่ง chmod
[root@ZBXPROXY ~]# chmod a+x ./certbot-auto
  • จากนั้นทำการ Execute ไฟล์ certbot-auto โดยติดตั้งทุก package ที่เป็น Dependency และกด y เพื่อเริ่มติดตั้ง
[root@ZBXPROXY ~]# ./certbot-auto.(ตัด output บางส่วนออกนะครับ).Transaction Summary====================================================================================================================================Install 8 Packages (+35 Dependent packages)Upgrade ( 2 Dependent packages)Total download size: 50 MIs this ok [y/d/N]:
  • หลังจากติดตั้งไฟล์เรียบร้อยแล้ว ระบบจะแสดงข้อความ Complete! ตามด้านล่าง
Complete!Creating virtual environment...Installing Python packages...Installation succeeded.Saving debug log to /var/log/letsencrypt/letsencrypt.logFailed to find executable apachectl in PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binCertbot doesn't know how to automatically configure the web server on this system. However, it can still get a certificate for you. Please run "certbot-auto certonly" to do so. You'll need to manually configure your web server to use the resulting certificate.
  • ทำการรันคำสั่งตามด้านล่าง ในที่นี้เราจะสร้าง SSL Certificate แบบ Wildcard ของ domain: *.mycompany.com (โดเมนนี้เป็นเพียงตัวอย่างนะครับ ตอนทดสอบผมใช้อีกโดเมนที่เป็นของจริงครับ) จากนั้นระบบจะให้เรากรอก Email
[root@ZBXPROXY ~]# ./certbot-auto certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns -d *.mycompany.com -d *.scm.mycompany.com

Saving debug log to /var/log/letsencrypt/letsencrypt.logPlugins selected: Authenticator manual, Installer NoneEnter email address (used for urgent renewal and security notices) (Enter 'c' tocancel): apichart@mycompany.com ==> กรอก Email
  • ทำการกด A และกด Y เพื่อรับทราบเงื่อนไขในการใช้บริการและอนุญาตให้ Let’s Encrypt แชร์ email ของให้เราให้องค์กรหรือมูลนิธิ Electronic Frontier ตามลำดับ
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Please read the Terms of Service athttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You mustagree in order to register with the ACME server athttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Would you be willing to share your email address with the Electronic FrontierFoundation, a founding partner of the Let's Encrypt project and the non-profitorganization that develops Certbot? We'd like to send you email about our workencrypting the web, EFF news, campaigns, and ways to support digital freedom.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(Y)es/(N)o: Y
  • กด Y เพื่อดำเนินการต่อ
Obtaining a new certificatePerforming the following challenges:dns-01 challenge for mycompany.comdns-01 challenge for scm.mycompany.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -NOTE: The IP of this machine will be publicly logged as having requested thiscertificate. If you're running certbot in manual mode on a machine that is notyour server, please ensure you're okay with that.Are you OK with your IP being logged?- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(Y)es/(N)o: Y
  • ถัดมาระบบจะให้เราต้องสร้าง DNS TXT Record “_acme-challenge.mycompany.com” โดยค่า TXT=ค่าที่ระบบ generate ให้ ตามตัวหนังสือสีน้ำเงิน ซึ่งตรงส่วนนี้ เราต้องเพิ่ม TXT Record บน DNS ของเราให้เสร็จและทดสอบให้เรียบร้อยก่อนที่จะ กดปุ่ม Enter นะครับ
37595539_987080101453356_5258311671465639936_o.png
  • ทำการทดสอบ DNS TXT Record ที่ได้สร้างไว้
37383566_987081011453265_1861771265145044992_n.png
  • หลังจากตรวจสอบแล้วว่า TXT ที่ได้รับตรงกันกับที่ตั้งไว้ จึงทำการกด Enter เพื่อไปยังขั้นตอนต่อไป
  • ขั้นตอนนี้จะเหมือนกับขั้นตอนก่อนหน้านี้ คือ เราต้องสร้าง DNS TXT Record “_acme-challenge.scm.mycompany.com” โดยค่า TXT=ค่าที่ระบบ generate ให้ ตามตัวหนังสือสีน้ำเงิน เช่นเดียวกันทำตรงนี้ให้เรียบร้อยและทดสอบ DNS record ก่อนนะครับ แล้วจึงค่อยกด Enter
37385008_987082041453162_4870807167831113728_o.png
  • ทำการทดสอบ DNS TXT Record ที่ได้สร้างไว้
37381226_987090278119005_752195609871515648_n.png
  • หลังจากตรวจสอบว่าค่า TXT ถูกต้องให้ทำการกด Enter และหากทำตามขั้นตอนถูกต้อง ระบบจะแสดงข้อความ Congratulation! และแสดงที่อยู่ หรือ Path ของ Certificate และ Private Key ตามตัวอย่างด้านล่าง (Note: Certificate จะมีอายุเพียง 3 เดือนนะครับ)
37544085_987091851452181_2000339575972560896_o.png
  • ทำการ Convert Certificate+Key .pem ให้เป็น .pfx (ขึ้นอยู่กับปลายทางที่จะติดตั้ง Certificate ว่า Support Type ไหนนะครับ)
37500421_987094478118585_1371125277970661376_n.png
  • ทำการ download ไฟล์ Certificate Wildcard .pfx จาก Linux (ในที่นี้ผมจะใช้ WinSCP)
37554826_987095681451798_6874326028920029184_n.png
  • จากบทความก่อนหน้า ผมได้ติดตั้งระบบเปลี่ยน Password บน Web browser ไว้ ผมจะใช้เครื่องนี้ทดสอบ และจะต้องทำการ NAT Web Server นี้ให้คนข้างนอกที่อยู่บน internet มองเห็นกันก่อนครับ
37592500_987106174784082_875574751676858368_o.png
  • ทำการสร้าง DNS Record สำหรับ Web server IIS เพื่อทดสอบ SSL Certificate แบบ Wildcard ในที่นี้จะเป็น Host = www88.mycompany.com นะครับ
37537783_987106904784009_6555661561753501696_o.png
  • ทดสอบเรียก URL: https://www88.mycompany.com:9443 ตามที่เตรียมไว้ครับ
  • และจากการทดสอบจะพบว่า Certificate ที่ได้รับจะเป็นของ IIS (Self-Signed Certificate) เอง
37397736_987109511450415_7342970599444054016_o.png
  • ที่นี้เรามาเริ่ม Import Certificate ที่ได้จาก Let’s Encrypt กันครับ โดยไป IIS > เลือก Server Certificates
37384274_987100728117960_2176382399875645440_o.png
  • ทำการ Import Certificate โดยการกด Import... และเลือกไฟล์ STAR.company.com.pfx และกรอก Private Key Password ที่ได้จาก Let’s Encrypt ก่อนหน้านี้
37384987_987102421451124_7391481881390219264_o.png
  • หลังจาก Import เรียบร้อยแล้ว จะพบว่าเรามี SSL Certificate แบบ Wildcard เพิ่มเข้ามา ที่เป็นของ Let’s Encrypt ครับ
37398808_987102618117771_7987567790968012800_o.png
  • ทำการ Assign Certificate ให้กับ Web Server (IIS) โดยไปที่ Default Website > Bindings > Edit HTTPS > เลือก SSL Certificate ของ Let’s Encrypt ที่ได้ Import เมื่อสักครู่ และกดปุ่ม OK
37578093_987103334784366_5819975376671080448_o.png
  • สุดท้ายทำการทดสอบ Website กันอีกครั้งครับ โดยใช้ URL เดิม >> https://www88.mycompany.com:9443 และจะพบว่า Certificate ที่ได้รับจะเป็น Certificate แบบ Wildcard ที่ออกโดย Let’s Encrypt ครับ (ไอคอนรูปกุญแจจะเป็นสีเขียว และบอกว่า Secure (ปลอดภัย) ครับ)
37399510_987105661450800_7758235083030396928_o.png
ข้อเสนอแนะ
  1. หลังจากที่เราได้ certificate แบบ Wildcard จาก Let’s Encrypt แล้ว เราสามารถที่จะ Import ได้หลาย device นะครับ เนื่องจาก Sub-domain ไม่จำกัดครับ (เป็น *.mycompany.com) การติดตั้งขึ้นอยู่กับประเภทของ Device นะครับว่า Support Certificate Type ไหนครับ ซึ่งเราสามารถที่จะ Convert ได้ครับ
  2. Certificate นี้จะมีอายุ 3 เดือน ซึ่งหาเรานำไปใช้งานจริง จะต้องคอย Renew ก่อนที่ Certificate จะหมดอายุ ดังนั้นเราสามารถต่อยอดจากตรงนี้ได้ ในเรื่องของการทำ Auto Renew ครับ
credit : https://web.facebook.com/notes/n-novation-industries/การสร้าง-ssl-certificate-แบบ-wildcard-ของ-lets-encrypt-และทดสอบติดตั้งใช้งานบน-i/987019674792732/
 

แฟนเพจ

โพสต์ล่าสุด


Top Bottom