ติดตั้ง SSL Certificate บน IIS
เมื่อซื้อ SSL Certificate แบบเสียเงินจากผู้ออกใบรับรอง (CA) เช่น แบบ OV หรือ EV สำหรับเว็บไซต์ที่รันบน IIS ของ Windows Server ขั้นตอนมีสามช่วง คือ สร้าง CSR (Certificate Signing Request) บนเซิร์ฟเวอร์ ส่ง CSR ให้ CA เพื่อออกใบรับรอง แล้วนำใบรับรองกลับมาติดตั้งและผูก (Binding) กับเว็บไซต์บนพอร์ต 443 บทความนี้ครอบคลุมทั้งสองกรณี คือ สร้าง CSR เองใน IIS และนำเข้าไฟล์ .pfx ที่มีอยู่แล้ว
ถ้าต้องการ SSL ฟรีที่ต่ออายุอัตโนมัติ ดู ขอ SSL ฟรีจาก Let's Encrypt บน IIS ด้วย win-acme แทน
สิ่งที่ต้องเตรียม
- Windows Server 2019 หรือ 2022 ที่ติดตั้ง IIS แล้ว ตาม ติดตั้ง IIS Web Server บน Windows Server
- บัญชีที่อยู่ในกลุ่ม Administrators และเข้าผ่าน Remote Desktop ได้
- เว็บไซต์ใน IIS ที่มี Binding แบบ http พร้อม Host name แล้ว เช่น
www.example.comและโดเมนชี้มาที่เซิร์ฟเวอร์แล้ว ดู ชี้โดเมนไปยังเซิร์ฟเวอร์ด้วย A Record หรือเปลี่ยน Name Server - พอร์ต 443 เปิดใน Windows Defender Firewall ดู เปิด Port บน Windows Defender Firewall หากเซิร์ฟเวอร์มี Security Group หรือ Firewall ภายนอกจากฝั่งผู้ให้บริการ ให้เปิดพอร์ตนั้นเพิ่มด้วย
ขั้นตอนที่ 1: สร้าง CSR ใน IIS Manager
ข้ามขั้นตอนนี้ได้ถ้ามีไฟล์ .pfx อยู่แล้ว (ไปที่ขั้นตอนที่ 3)
- เปิด Internet Information Services (IIS) Manager จาก Server Manager เมนู Tools หรือพิมพ์
inetmgrในหน้าต่าง Run - คลิกชื่อเซิร์ฟเวอร์ในแผง Connections ทางซ้าย (ระดับบนสุด ไม่ใช่ชื่อเว็บไซต์)
- ดับเบิลคลิกไอคอน Server Certificates
- ในแผง Actions ทางขวา คลิก Create Certificate Request...
- กรอกหน้า Distinguished Name Properties
- Common name: ชื่อโดเมนที่ต้องการ เช่น
www.example.com(CA ส่วนใหญ่จะรวมexample.comให้อัตโนมัติ ให้ตรวจกับ CA ที่ใช้) - Organization: ชื่อบริษัทตามที่จดทะเบียน (สำคัญสำหรับแบบ OV และ EV)
- Organizational unit: เช่น IT
- City/locality และ State/province: เช่น Bangkok
- Country/region:
TH
- Common name: ชื่อโดเมนที่ต้องการ เช่น
- หน้า Cryptographic Service Provider Properties เลือก Microsoft RSA SChannel Cryptographic Provider และ Bit length 2048 ขึ้นไป
- ระบุตำแหน่งบันทึกไฟล์ เช่น
C:\certs\www.example.com.csr.txtแล้วกด Finish
ไฟล์ที่ได้เป็นข้อความที่ขึ้นต้นด้วย -----BEGIN NEW CERTIFICATE REQUEST----- ในขั้นตอนนี้ Windows สร้าง Private Key เก็บไว้ในเครื่องนี้แล้ว จึงต้องทำขั้นตอนที่ 2 บน เซิร์ฟเวอร์เครื่องเดียวกัน ห้ามลบ Request ที่ค้างอยู่
ขั้นตอนที่ 2: ส่ง CSR ให้ CA และติดตั้งใบรับรองที่ได้
คัดลอกข้อความ CSR ทั้งหมดรวมบรรทัด BEGIN และ END ไปวางในหน้าสั่งซื้อหรือหน้า Reissue ของ CA ทำการยืนยันความเป็นเจ้าของโดเมนตามที่ CA กำหนด (อีเมล, DNS TXT Record หรือไฟล์บนเว็บไซต์) เมื่อ CA ออกใบรับรองแล้ว ให้ดาวน์โหลดแบบสำหรับ IIS หรือไฟล์ .cer/.crt พร้อม Intermediate Certificate (CA Bundle)
- คัดลอกไฟล์ใบรับรองไปไว้บนเซิร์ฟเวอร์ เช่น
C:\certs\www.example.com.cer - ใน IIS Manager ที่หน้า Server Certificates คลิก Complete Certificate Request...
- เลือกไฟล์ใบรับรอง ตั้ง Friendly name ที่ระบุโดเมนและปีหมดอายุ เช่น
www.example.com 2027เพื่อแยกออกจากใบเก่าเวลาต่ออายุ - เลือก Certificate store เป็น Web Hosting (เหมาะกับเซิร์ฟเวอร์ที่มีหลายเว็บไซต์) หรือ Personal แล้วกด OK
ถ้า CA ส่ง Intermediate Certificate มาแยก ให้ติดตั้งเข้า Store ของเครื่อง: เปิด certlm.msc ไปที่ Intermediate Certification Authorities แล้วคลิกขวาที่ Certificates เลือก All Tasks และ Import... แล้วเลือกไฟล์ Intermediate
ขั้นตอนที่ 3: นำเข้าไฟล์ .pfx (กรณีมีไฟล์อยู่แล้ว)
ไฟล์ .pfx (หรือ .p12) รวมใบรับรองและ Private Key ไว้ด้วยกัน มักได้มาจากการ Export จากเซิร์ฟเวอร์เดิม หรือ CA บางรายสร้างให้
- ที่หน้า Server Certificates คลิก Import... ในแผง Actions
- เลือกไฟล์
.pfxและใส่รหัสผ่านของไฟล์ - เลือก Certificate store เป็น Web Hosting หรือ Personal
- ช่อง Allow this certificate to be exported ให้เลือกเฉพาะเมื่อจำเป็นต้อง Export ไปเครื่องอื่นอีก
ทำเทียบเท่ากันด้วย PowerShell ที่เปิดแบบ Run as administrator ได้ดังนี้ ระบบจะถามรหัสผ่านของไฟล์
Import-PfxCertificate -FilePath C:\certs\www.example.com.pfx `
-CertStoreLocation Cert:\LocalMachine\WebHosting `
-Password (Read-Host -AsSecureString -Prompt "PFX password")
ผลลัพธ์จะแสดง Thumbprint และ Subject ของใบรับรอง ให้จด Thumbprint ไว้ใช้ในขั้นตอนถัดไปถ้าจะผูก Binding ด้วย PowerShell
ขั้นตอนที่ 4: ผูกใบรับรองกับเว็บไซต์ (HTTPS Binding)
- ใน IIS Manager ขยาย Sites แล้วคลิกเว็บไซต์ที่ต้องการ
- ในแผง Actions คลิก Bindings... แล้วกด Add...
- Type: https, IP address: All Unassigned, Port: 443
- Host name:
www.example.com - เลือก Require Server Name Indication (SNI) เพื่อให้หลายเว็บไซต์ใช้พอร์ต 443 ร่วมกันบน IP เดียวได้
- SSL certificate: เลือกใบรับรองตาม Friendly name แล้วกด OK
- ทำซ้ำอีกหนึ่ง Binding สำหรับ
example.comถ้าใบรับรองครอบคลุมทั้งสองชื่อ
ถ้าต้องการทำด้วย PowerShell (แทนชื่อเว็บไซต์และ Thumbprint ด้วยค่าจริง)
Import-Module WebAdministration
New-WebBinding -Name "example.com" -Protocol https -Port 443 -HostHeader "www.example.com" -SslFlags 1
$binding = Get-WebBinding -Name "example.com" -Protocol https -HostHeader "www.example.com"
$binding.AddSslCertificate("ใส่THUMBPRINTที่นี่", "WebHosting")
-SslFlags 1 คือเปิด SNI และค่า "WebHosting" ต้องตรงกับ Store ที่นำเข้าใบรับรองไว้ (ถ้าใช้ Personal ให้ใส่ "My")
ขั้นตอนที่ 5: บังคับ HTTP ไปเป็น HTTPS (ทางเลือก)
IIS ไม่มีการ Redirect ในตัวแบบที่เหมาะกับงานนี้ ให้ติดตั้งโมดูล URL Rewrite จาก iis.net/downloads/microsoft/url-rewrite ก่อน แล้วเพิ่มกฎในไฟล์ web.config ที่ Root ของเว็บไซต์ ภายใน <system.webServer> (สำรองไฟล์ก่อนแก้)
<rewrite>
<rules>
<rule name="HTTP to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
ถ้า web.config มีส่วน <rewrite> อยู่แล้ว (เช่น เว็บไซต์ WordPress บน IIS) ให้เพิ่มเฉพาะ <rule> ไว้เป็นกฎแรกใน <rules> อย่าสร้างส่วน rewrite ซ้ำ เพราะจะทำให้เกิด Error 500.19
ตรวจสอบผลลัพธ์
- เปิด
https://www.example.comในเบราว์เซอร์ ต้องไม่มีคำเตือน และเมื่อคลิกไอคอนหน้าที่อยู่ จะเห็นชื่อผู้ออกใบรับรองและวันหมดอายุตรงกับที่ซื้อ - ตรวจว่า Chain ครบด้วยเครื่องมือออนไลน์ เช่น SSL Labs (ssllabs.com/ssltest) ต้องไม่มีข้อความ Chain issues: Incomplete
- ตรวจจากเครื่องที่มี OpenSSL ด้วยคำสั่งใน ตรวจสอบ SSL Certificate และวันหมดอายุ
ปัญหาที่พบบ่อย
ใบรับรองหายไปจากรายการหลังกด Complete Certificate Request หรือเลือกใน Binding ไม่ได้
สาเหตุหลักคือใบรับรองไม่มี Private Key คู่กัน เช่น สร้าง CSR คนละเครื่อง หรือลบ Request ที่ค้างไปก่อน ถ้า CSR สร้างบนเครื่องนี้จริง ให้ลองซ่อมการจับคู่ Key ด้วย Command Prompt แบบ Administrator โดยใช้ Serial Number ของใบรับรอง (ดูได้จากแท็บ Details ของไฟล์ .cer)
certutil -repairstore my "SERIALNUMBER"
ถ้ายังไม่ได้ ต้องสร้าง CSR ใหม่บนเครื่องนี้แล้วขอ Reissue จาก CA ซึ่ง CA ส่วนใหญ่ทำให้ได้โดยไม่มีค่าใช้จ่ายเพิ่มในช่วงอายุใบรับรอง
เบราว์เซอร์บางตัวหรือแอปมือถือแจ้งว่าใบรับรองไม่น่าเชื่อถือ
มักเกิดจากไม่ได้ติดตั้ง Intermediate Certificate ทำให้ Chain ไม่ครบ ให้ติดตั้งตามท้ายขั้นตอนที่ 2 แล้วรีสตาร์ต IIS ด้วย iisreset ในช่วงที่มีผู้ใช้น้อย
เว็บไซต์อื่นบนเซิร์ฟเวอร์เดียวกันแสดงใบรับรองผิดชื่อ
เกิดเมื่อบาง Binding ไม่ได้เปิด SNI หรือไม่มี Host name ทำให้ IIS ใช้ใบรับรองของ Binding นั้นเป็นค่าเริ่มต้นสำหรับทุกชื่อ ให้ตรวจ Binding แบบ https ของทุกเว็บไซต์ให้มี Host name และเลือก Require Server Name Indication
ใบรับรองแบบเสียเงินต้องต่ออายุด้วยตนเอง ควรตั้งการแจ้งเตือนก่อนหมดอายุไว้ล่วงหน้า หากติดปัญหาระหว่างติดตั้ง ติดต่อทีมงาน THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี


