
การขอ SSL Certificate จาก Certificate Authority (CA) เช่น RapidSSL, GeoTrust หรือ DigiCert ต้องใช้ไฟล์ที่เรียกว่า CSR (Certificate Signing Request) เป็นขั้นตอนแรก บทความนี้จะพาคุณสร้าง CSR ทีละขั้นตอนทั้งบน Linux และ Windows รวมถึงอธิบายแต่ละ field ที่ต้องกรอกให้เข้าใจ
CSR คืออะไร
CSR ย่อมาจาก Certificate Signing Request คือไฟล์ข้อความที่มีข้อมูลเกี่ยวกับองค์กรและโดเมนของคุณ รวมถึง Public Key ที่เชื่อมโยงกับ Private Key ที่สร้างขึ้นพร้อมกัน เมื่อคุณส่ง CSR ไปให้ CA พวกเขาจะใช้ข้อมูลในนั้นเพื่อสร้าง SSL Certificate ที่ลงนามรับรองแล้ว
กระบวนการทำงานของ CSR มีดังนี้:
- คุณสร้าง Private Key + CSR บนเซิร์ฟเวอร์ของคุณ
- ส่ง CSR (ไม่ใช่ Private Key) ให้ CA
- CA ตรวจสอบข้อมูลและออก Certificate ให้
- คุณติดตั้ง Certificate + Private Key บนเซิร์ฟเวอร์
สำคัญ: Private Key ต้องเก็บไว้ที่เซิร์ฟเวอร์เท่านั้น ห้ามส่งให้ CA หรือบุคคลอื่นเด็ดขาด ถ้า Private Key หลุดออกไป ต้องยกเลิก Certificate และขอใหม่ทันที
CSR คืออะไร มีข้อมูลอะไรบ้าง (CN, O, OU, SAN)
เมื่อแกะไฟล์ CSR ออกมาดู จะพบว่าด้านในมีองค์ประกอบหลักอยู่ 2 ส่วน คือ Subject (ข้อมูลระบุตัวตนของเจ้าของโดเมน/องค์กร) และ Public Key ที่ CA จะนำไปลงนามรับรอง ส่วน Subject นี้เองที่ประกอบด้วยฟิลด์มาตรฐานหลายตัว ซึ่งแต่ละตัวมีบทบาทต่างกันและส่งผลต่อชนิดของ Certificate ที่จะได้รับ การเข้าใจว่าแต่ละฟิลด์หมายถึงอะไรจะช่วยให้กรอกข้อมูลได้ถูกต้องตั้งแต่ครั้งแรก ไม่ต้องสร้าง CSR ใหม่ซ้ำหลายรอบ
ฟิลด์ที่สำคัญที่สุดในทุก CSR มีดังนี้:
- CN (Common Name) — ชื่อโดเมนหลักที่ Certificate จะคุ้มครอง เป็นฟิลด์ที่สำคัญที่สุดและต้องตรงกับโดเมนจริงเป๊ะ เช่น
shop.example.com - O (Organization) — ชื่อองค์กรหรือบริษัทตามที่จดทะเบียน จำเป็นสำหรับ OV/EV SSL เพราะ CA จะตรวจสอบกับเอกสารนิติบุคคลจริง สำหรับ DV SSL ฟิลด์นี้มักไม่ถูกนำมาแสดงใน Certificate
- OU (Organizational Unit) — แผนกหรือหน่วยงานภายในองค์กร เช่น
ITหรือWeb Operationsเป็นฟิลด์ทางเลือก ปัจจุบัน CA ส่วนใหญ่เริ่มเลิกแสดงฟิลด์นี้แล้ว - L / ST / C — เมือง (Locality), จังหวัด/รัฐ (State) และรหัสประเทศ 2 ตัวอักษร (Country) เช่น
Bangkok / Bangkok / TH - SAN (Subject Alternative Name) — รายชื่อโดเมนเพิ่มเติมที่ Certificate ใบเดียวกันจะคุ้มครอง เช่น
example.comและwww.example.comพร้อมกัน เบราว์เซอร์ยุคใหม่ยึด SAN เป็นหลัก ไม่ได้ดูแค่ CN อีกต่อไป
เกร็ดสำคัญ: เบราว์เซอร์สมัยใหม่ (Chrome, Firefox, Safari) ใช้ค่าใน SAN ในการตรวจสอบว่าโดเมนตรงกับ Certificate หรือไม่ ไม่ได้ดูจาก CN แล้ว ดังนั้นถ้าต้องการให้ทั้ง example.com และ www.example.com ใช้ Certificate เดียวกันได้ ต้องใส่ทั้งสองชื่อไว้ใน SAN เสมอ
ข้อมูลที่ต้องเตรียมก่อนสร้าง CSR
ก่อนสร้าง CSR ให้เตรียมข้อมูลต่อไปนี้ให้พร้อม:
- Common Name (CN) — ชื่อโดเมนที่ต้องการ SSL เช่น
yourdomain.comหรือwww.yourdomain.com - Organization (O) — ชื่อองค์กรหรือบริษัท ต้องตรงกับเอกสารจดทะเบียน (สำหรับ OV/EV SSL)
- Organizational Unit (OU) — แผนกหรือหน่วยงาน เช่น IT Department
- City/Locality (L) — เมือง เช่น Bangkok
- State/Province (ST) — จังหวัด เช่น Bangkok
- Country (C) — รหัสประเทศ 2 ตัวอักษร เช่น TH
- Email Address — อีเมลผู้ดูแลระบบ
สร้าง CSR บน Linux ด้วย OpenSSL
วิธีที่นิยมที่สุดคือใช้ OpenSSL ซึ่งติดตั้งมาแล้วใน Linux ส่วนใหญ่ รันคำสั่งต่อไปนี้ใน Terminal:
ขั้นที่ 1: สร้าง Private Key และ CSR พร้อมกัน
openssl req -new -newkey rsa:2048 -nodes \
-keyout yourdomain.key \
-out yourdomain.csr
คำสั่งนี้จะถามข้อมูลทีละ field จากนั้นสร้างไฟล์ 2 ไฟล์:
yourdomain.key— Private Key (เก็บไว้ที่เซิร์ฟเวอร์ ห้ามส่งให้ใคร)yourdomain.csr— CSR ที่ต้องส่งให้ CA
ขั้นที่ 2: สร้างแบบ Non-Interactive (ระบุข้อมูลในคำสั่งเดียว)
openssl req -new -newkey rsa:2048 -nodes \
-keyout yourdomain.key \
-out yourdomain.csr \
-subj "/C=TH/ST=Bangkok/L=Bangkok/O=Your Company/OU=IT/CN=yourdomain.com"
ขั้นที่ 3: ตรวจสอบเนื้อหาของ CSR
openssl req -text -noout -verify -in yourdomain.csr
คำสั่งนี้จะแสดงข้อมูลใน CSR เพื่อให้คุณตรวจสอบความถูกต้องก่อนส่งให้ CA
สร้าง CSR บน Windows
บน Windows สามารถสร้าง CSR ได้หลายวิธี ทั้งผ่าน IIS Manager และ OpenSSL สำหรับ Windows
วิธีที่ 1: ผ่าน IIS Manager
- เปิด IIS Manager → คลิกที่เซิร์ฟเวอร์
- เลือก Server Certificates → Create Certificate Request
- กรอกข้อมูล Distinguished Name Properties
- เลือก Cryptographic Service Provider: Microsoft RSA SChannel และ Bit Length: 2048
- บันทึกไฟล์ .txt ที่เป็น CSR
วิธีที่ 2: OpenSSL บน Windows
ดาวน์โหลด OpenSSL สำหรับ Windows จาก slproweb.com แล้วรันคำสั่งเดียวกับ Linux ใน Command Prompt หรือ PowerShell
สร้าง CSR ผ่าน DirectAdmin (ไม่ต้องใช้คำสั่ง)
ถ้าใช้โฮสติ้งหรือ VPS ที่มี DirectAdmin (เช่น แพ็กเกจของ AsiaGB) คุณสามารถสร้าง CSR และ Private Key ผ่านหน้าเว็บได้โดยไม่ต้องเปิด Terminal เลย DirectAdmin จะจัดเก็บ Private Key ให้บนเซิร์ฟเวอร์โดยอัตโนมัติ ซึ่งช่วยลดความเสี่ยงที่ Private Key จะหลุดออกไประหว่างการคัดลอกไฟล์ ทำตามขั้นตอนนี้:
- เข้าสู่ระบบ DirectAdmin แล้วไปที่เมนู SSL Certificates ภายใต้โดเมนที่ต้องการ
- เลือกตัวเลือก Create A Certificate Request (สร้างคำขอใบรับรอง)
- กรอกข้อมูล CSR ให้ครบ: Common Name (โดเมน), Email, Organization, City, State, Country และ Key Size (เลือก 2048 ขึ้นไป)
- ถ้ารองรับ ให้เพิ่ม SAN ในช่อง More Certificate Names เพื่อให้คุ้มครองทั้ง
example.comและwww.example.com - กด Save — DirectAdmin จะสร้าง Private Key เก็บไว้ และแสดง CSR (บล็อก
-----BEGIN CERTIFICATE REQUEST-----) ให้คัดลอก
คัดลอกบล็อก CSR ทั้งหมดไปวางในหน้าสั่งซื้อ SSL จากนั้นเมื่อ CA ออกใบรับรองกลับมา ก็นำ Certificate มาวางในเมนู Paste a pre-generated certificate and key ของ DirectAdmin ได้ทันที เพราะ Private Key ถูกเก็บคู่ไว้อยู่แล้ว — อ่านรายละเอียดการติดตั้งเพิ่มเติมได้ที่บทความ ติดตั้ง SSL Certificate บน DirectAdmin
หมายเหตุ: ลูกค้า AsiaGB ที่ใช้โฮสติ้ง DirectAdmin สร้าง CSR ได้ฟรีผ่านหน้า control panel หรือจะใช้ OpenSSL บนเครื่องตัวเองแล้วส่ง CSR เข้ามาก็ได้ ทั้งสองวิธีใช้กับ SSL แบบเสียเงิน (DV เริ่มต้น 1,000 บาท/ปี) ได้เหมือนกัน
กรอกข้อมูล CSR ให้ถูก (CN ตรงโดเมน, Wildcard *.domain.com)
สาเหตุที่ทำให้ CA ปฏิเสธ CSR หรือออก Certificate ผิดโดเมนมากที่สุด คือการกรอก Common Name ไม่ตรงกับโดเมนที่จะใช้งานจริง การเลือกรูปแบบ CN ให้ถูกตามชนิดของ Certificate จึงสำคัญมาก ตารางด้านล่างสรุปว่าควรกรอก CN อย่างไรในแต่ละกรณี:
| สิ่งที่ต้องการคุ้มครอง | กรอก CN ว่า | ชนิด Certificate |
|---|---|---|
| เฉพาะโดเมนหลัก | example.com |
Single-domain |
| โดเมนหลัก + www | example.com + SAN www.example.com |
Single + SAN |
| ทุก subdomain ระดับเดียว | *.example.com |
Wildcard |
| หลายโดเมนต่างกัน | example.com + SAN example.net, example.org |
Multi-domain (SAN) |
จุดที่มักเข้าใจผิดเรื่อง Wildcard คือ *.example.com จะคุ้มครองเฉพาะ subdomain ระดับเดียว เช่น blog.example.com หรือ shop.example.com แต่ ไม่ ครอบคลุมตัวโดเมนเปล่า example.com และ ไม่ ครอบคลุม subdomain ซ้อน เช่น a.b.example.com ถ้าต้องการให้โดเมนเปล่าใช้งานได้ด้วย ต้องใส่ example.com เพิ่มเข้าไปใน SAN ของ CSR
คำสั่งสร้าง CSR แบบ Wildcard + SAN ด้วย OpenSSL
OpenSSL ไม่รับ SAN ผ่าน -subj โดยตรง ต้องสร้างไฟล์ config ก่อน เช่นไฟล์ san.cnf:
[ req ]
default_bits = 2048
distinguished_name = dn
req_extensions = req_ext
prompt = no
[ dn ]
C = TH
ST = Bangkok
L = Bangkok
O = Your Company
CN = *.example.com
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = example.com
DNS.2 = *.example.com
จากนั้นสร้าง CSR โดยอ้างไฟล์ config นี้:
openssl req -new -newkey rsa:2048 -nodes \
-keyout example.key \
-out example.csr \
-config san.cnf
ตรวจสอบ CSR และเก็บ Private Key ให้ปลอดภัย
ก่อนส่ง CSR ให้ CA ควรตรวจสอบเนื้อหาภายในเสมอ เพื่อยืนยันว่า CN, Organization และ SAN ถูกต้องครบถ้วน ความผิดพลาดเล็กน้อย เช่น พิมพ์ CN ผิด 1 ตัวอักษร อาจทำให้ต้องเสียเวลาออกใบรับรองใหม่ทั้งใบ ใช้คำสั่งนี้เพื่อดูข้อมูลภายใน CSR แบบอ่านง่าย:
openssl req -noout -text -in example.csr
มองหาบรรทัด Subject: เพื่อตรวจ CN/O/C และมองหา X509v3 Subject Alternative Name: เพื่อยืนยันว่า SAN ที่ตั้งใจใส่อยู่ครบ ถ้าต้องการตรวจว่า CSR กับ Private Key เป็นคู่เดียวกันจริง ให้เทียบค่า modulus ของทั้งสองไฟล์:
openssl req -noout -modulus -in example.csr | openssl md5
openssl rsa -noout -modulus -in example.key | openssl md5
ค่า md5 ทั้งสองบรรทัดต้องตรงกันเป๊ะ ถ้าไม่ตรง แปลว่า CSR กับ Private Key ไม่ใช่คู่เดียวกัน ติดตั้งแล้วเซิร์ฟเวอร์จะไม่ยอมเริ่ม HTTPS
การเก็บ Private Key ให้ปลอดภัย
- ตั้งสิทธิ์ไฟล์ให้แคบที่สุดด้วย
chmod 600 example.keyเพื่อให้เฉพาะเจ้าของอ่านได้ - เก็บ Private Key ไว้ในเซิร์ฟเวอร์เท่านั้น ห้ามส่งทางอีเมล/แชต และห้ามอัปขึ้น Git repository
- สำรอง Private Key ไว้ในที่ปลอดภัย (เช่น password manager หรือ secret vault) เพราะถ้าทำหายจะติดตั้ง Certificate ที่ได้รับกลับมาไม่ได้
- ถ้าสงสัยว่า Private Key รั่ว ให้ขอ revoke Certificate และออก CSR + Key ใหม่ทันที
ดูเนื้อหา CSR และส่งให้ CA
ไฟล์ CSR ที่สร้างได้จะเป็น Base64 ที่มีหน้าตาแบบนี้:
-----BEGIN CERTIFICATE REQUEST-----
MIICpDCCAYwCAQAwXzELMAkGA1UEBhMCVEgxEDAOBgNVBAgMB0Jhbmdrb2sxEDAO
...
-----END CERTIFICATE REQUEST-----
คัดลอก text ทั้งหมดรวมถึงบรรทัด -----BEGIN CERTIFICATE REQUEST----- และ -----END CERTIFICATE REQUEST----- แล้วนำไปวางในหน้าสั่งซื้อ SSL Certificate ของ AsiaGB
ข้อผิดพลาดที่พบบ่อยเมื่อสร้าง CSR
- Common Name ไม่ตรงกับโดเมน — ตรวจสอบให้แน่ใจว่า CN ตรงกับโดเมนที่ต้องการ SSL เป๊ะ (รวม www หรือไม่)
- ใช้อักขระพิเศษ — บางฟิลด์ไม่รองรับ &, @, !, # ให้ใช้ตัวอักษรและตัวเลขเท่านั้น
- Private Key ไม่ตรงกับ CSR — ถ้าสร้าง Key และ CSR แยกกัน ต้องใช้คู่เดียวกัน
- Bit length ต่ำเกินไป — ใช้ RSA 2048-bit ขึ้นไป หรือ ECDSA 256-bit
คำถามที่พบบ่อยเกี่ยวกับ CSR
สร้าง CSR แล้วต้องสร้าง Private Key ใหม่ทุกครั้งไหม
โดยทั่วไปแนะนำให้สร้าง Private Key ใหม่พร้อม CSR ทุกครั้งที่ขอ Certificate ใหม่ เพราะปลอดภัยกว่า แต่ในทางเทคนิคสามารถสร้าง CSR ใหม่จาก Private Key เดิมได้ด้วยคำสั่ง openssl req -new -key example.key -out new.csr วิธีนี้เหมาะกับกรณีต่ออายุ Certificate ที่ต้องการคง Key เดิมไว้ อย่างไรก็ตามการสร้าง Key ใหม่ทุกครั้งช่วยลดความเสี่ยงหาก Key เก่าเคยถูกเปิดเผย
CSR มีวันหมดอายุไหม
ตัวไฟล์ CSR เองไม่มีวันหมดอายุ คุณสามารถเก็บไว้และนำไปยื่นกับ CA เมื่อไหร่ก็ได้ แต่ในทางปฏิบัติควรสร้าง CSR ใหม่ทุกครั้งที่ขอใบรับรอง เพราะข้อมูลองค์กรหรือนโยบายของ CA (เช่น ขนาด Key ขั้นต่ำ) อาจเปลี่ยนไป Certificate ที่ออกจาก CSR ต่างหากที่มีวันหมดอายุตามอายุของใบรับรอง
ใช้ CSR เดิมต่ออายุ SSL ได้หรือไม่
ได้ แต่ไม่แนะนำ การต่ออายุด้วย CSR เดิมหมายความว่าใช้ Private Key เดิมต่อไป ซึ่งหาก Key นั้นเคยถูกใช้งานมานานหรือเสี่ยงรั่ว ก็ควรสร้าง CSR + Private Key ชุดใหม่จะปลอดภัยกว่า ระบบของ CA ส่วนใหญ่รองรับทั้งสองแบบ เพียงวาง CSR ในขั้นตอนต่ออายุตามปกติ
RSA 2048 กับ ECDSA ต่างกันอย่างไร ควรเลือกตัวไหน
RSA 2048-bit เป็นค่ามาตรฐานที่รองรับได้กว้างที่สุดและเข้ากันได้กับเซิร์ฟเวอร์เก่าทุกตัว ส่วน ECDSA (เช่น P-256) ให้ความปลอดภัยเทียบเท่าด้วยขนาด Key ที่เล็กกว่า ทำให้ handshake เร็วขึ้นเล็กน้อย หากไม่มีข้อกำหนดพิเศษ การเลือก RSA 2048 ก็เพียงพอและปลอดภัยสำหรับเว็บไซต์ทั่วไป
สั่งซื้อ SSL Certificate วันนี้
DV SSL เริ่มต้น 1,000 บาท/ปี จาก RapidSSL, GeoTrust, DigiCert พร้อมทีมซัพพอร์ตไทยช่วยติดตั้ง
ดู SSL Certificate