Self-Signed Custom SSL

วิธีการในการทำให้ แอปพลิเคชั้นของคุณปลอดภัยคือการใช้ การเชื่อมต่อผ่าน SSL-encrypted (Secure Socket Layer) ใน Ruk-Com Cloud คุณสามารถใช้ได้ทั้งของ Ruk-Com SSL และ Custom SSL certificates

ทั้งนี้สำหรับ Custom SSL certificates ทั้งหมดจะต้องทำการขอผ่านบริษัทเกี่ยวกับ Certificate Authority (CA) ยกตัวอย่างเช่น Let’s Enctypt ในกรณี cetificate ของคุณก็จะกลายเป็น cetificate ที่น่าเชื่อถือ หลังจากทำการขอเรียบร้อยแล้ว เพื่อให้เกิดความน่าเชื่อถือจากผู้อื่นและทำการการเชื่อมต่อไปยังแอปพลิเคชั่นของคุณไม่มีปัญหา

แต่ถึงอย่างไรคุณสามารถขอ custom certificate ด้วยตัวคุณเองได้และยังคงได้รับการเชื่อมต่อที่ปลอดภัย แต่ certificate ดังกล่าวจะไม่น่าเชื่อถือ ทำให้เวลาเปิดแอปพลิเคชั่น ตัวแอปพลิเคชั่นจะแสดงข้อความแจ้งเตือนให้ออกจากหน้าเว็บไซต์กับผู้ใช้งาน เพราะว่าการเชื่อมต่อไม่น่าเชื่อถือ

ผู้ใช้งานส่วนใหญ่จะออกจากหน้าเว็บนั้น ดังนั้นเราแนะนำว่าคุณไม่ควรใช้ self-signed-certficates สำหรับแอปพลิเคชั่น production แต่ว่าสามารถใช้งานสำหรับ การพัฒนา/ทดสอบระบบ หรือ เว็บไซต์ส่วนตัวที่เข้ากันเฉพาะกลุ่มเล็ก

ดังนั้น เรามาดูวิธีการสร้าง certificate ในแต่ละแบบ และ วิธีการนำไปใช้งานกับ Ruk-Com Cloud env

การขอ Self-Signed SSL Certificate

สำหรับการขอ self-signed ssl certificate นั้นคุณต้องทำการซื้อโดเมนก่อน

เมื่อทำการสั่งซื้อเรียบร้อยแล้ว คุณพร้อมที่จะดำเนินการในการสร้าง ssl certificate ของคุณด้วยความช่วยเหลือของเครื่องมือต่างๆ ในตัวอย่างนี้เราจะใช้งาน OpenSSL ทั้งนี้ขึ้นอยู่กับระบบปฎิบัติการที่คุณใช้งาน สามารถดูขั้นตอนการทำต่อไปนี้

  • สำหรับ Windows
  • สำหรับ Linux/MacOS/FreeBSD

คุณยังสามารถสร้างไฟล์ที่ต้องการได้โดยใช้ Elastic Virtual Private Server ของเรา

สำหรับ Windows

ให้คุณ ดาวน์โหลด OpenSSL เวอร์ชั่นล่าสุด ให้ทำการแตกไฟล์และเปิดใช้งานโดยการคลิ๊กสองครั้งที่ไฟล์ openssl.exe หลังจากนั้นไฟล์ที่ถูกสร้างโดย OpenSSL จะปรากฎในโฟลเดอร์เดียวกันกับที่เปิดไฟล์ openssl.exe

  1. ลำดับแรก คุณต้องสร้าง SSH private key สำหรับ root certificate ของคุณ (ใช้ในการขอ certificate ทั้งหมด) ใช้คำสั่งต่อไปนี้
genrsa -out {filename} {length}

{filename} – ชื่อของไฟล์คีย์ที่มี .key ต่อท้าย (ตัวอย่าง rootCA.key)
{length} – ความยาวของ private key เป็นหน่วย bit (ตัวอย่าง 2048)

  1. ถัดไปให้คุณทำการสร้างไฟล์ root CA certificate โดยใช้คีย์ที่ได้เตรียมมาในการสร้าง โดยใช้คำสั่ง req กับ ตัวเลือก x509 ในคำสั่งเพื่อให้ออกมาเป็น self-singed root cerificate แทน certificate request
req -config {config_path} -x509 -new -key {keyname} -days {days} -out {filename}

{config_path} – พาร์ทของ openssl.cnf configuration file ที่อยู่ใน directory ที่มีไฟล์ OpenSSL ที่แตกออกมา (ระบุตาม C:\path\to\openssl.cnf format)
{keyname} – ชื่อ root key ของคุณ (ชื่อที่คุณได้ตั้งไว้ในขั้นตอนก่อนหน้านี้ Ex. rootCA.key)
{day} – จำนวนวันที่ certificate ปัจจุบันจะสามารถใช้งานได้
{filename} – ชื่อของ cetificate ที่เป็น .crt (Ex. rootCA.crt)
ตั้งค่ารายละเอียดที่จำเป็นสำหรับ CA certficate โดยการตอบคำถามตามรายการที่ปรากฎ

หลังจากตอบคำถามทั้งหมดเรียบร้อยแล้วคุณจะได้รับ self-signed root certificate สำหรับ CA ของคุณเอง

  1. ตอนนี้ คุณสามารถสร้าง private key และ self-signed certificate ของคุณกับ Hostname ที่ซื้อไว้ เริ่มต้นด้วยการสร้าง key เราจะสร้าง key วิธีเดียวกันกับสร้าง root
genrsa -out {filename} {length}

{filename} – ชื่อของไฟล์คีย์ที่มี .key ต่อท้าย (ตัวอย่าง host.key)
{length} – ความยาวของ private key เป็นหน่วย bit (ตัวอย่าง 2048)

Note: คุณไม่ควรป้องกันคีย์ของคุณด้วยรหัสผ่าน มิฉะนั้นจะทำให้คุณได้รับ error ระหว่างที่เพิ่ม key เข้าไปที่หน้าจัดการของ Ruk-Com Cloud

  1. ถัดไปทำการรันคำสั่งต่อไปที่นี้สร้างไฟล์ certificate signing request (CSR)
req -config {config_path} -new -key {keyname} -out {filename}

{config_path} – พาร์ทของ openssl.cnf configuration file ที่อยู่ใน directory ที่มีไฟล์ OpenSSL ที่แตกออกมา (ระบุตาม C:\path\to\openssl.cnf format)
{keyname} – ชื่อ root key ของคุณ (ชื่อที่คุณได้ตั้งไว้ในขั้นตอนก่อนหน้านี้ Ex. host.key)
{filename} – ชื่อขอไฟล์ output ที่เป็น .csr (Ex. host.csr)
ให้คุณทำการตอบคำถามตามรายการที่ปรากฎเพื่อใช้เป็นข้อมูลของคุณในการสร้าง certificate

Note: ตัวแปร Common name ควรเป็นชื่อเดียวกับชื่อโดเมนที่คุณต้องการใช้งาน มิฉะนั้น certificate ของคุณจะไม่สามารถใช้งานได้

  1. ขั้นตอนสุดท้าย คือการสร้าง self-signed certificate ของคุณ โดยใช้ root CA certificate เราจะใช้คำสั่ง x509 กับตัวเลือกตามนี้
    • -req – หมายถึง ต้องการ format ของ input file ที่ใช้ในการขอ certificate
    • -CAcreateserial – กำหนดค่าเริ่มต้นของการสร้างไฟล์ CA serial number (ถ้าไม่มีไฟล์อยู่)
x509 -req -in {requestname} -CA {CA_certificate} -CAkey {CA_key} -CAcreateserial -out {filename} -days {days}

{requestname} – ชื่อของไฟล์ .csr ที่ใช้เป็น input request (Ex. host.csr)
{CA_certificate} – กำหนด CA certificate ที่จะใช้ในการขอ certificate (Ex. rootCA.crt)
{CA_key} – ชุดของ CA private key ที่ใช้กับการขอ certificate (Ex. rootCA.key)
{filename} – ชื่อของไฟล์ .crt (Ex. host.crt)
{day} – จำนวนวันที่ certificate ปัจจุบันจะสามารถใช้งานได้

หลังจากดำเนินการตามขั้นตอนข้างต้นคุณจะมี self-signed SSL certificate สำหรับใช้งานใน application ของคุณเรียบร้อยแล้ว

For Linux/MacOS/FreeBSD

ในกรณีที่คุณยังไม่ได้ติดตั้งเครื่องมือ OpenSSL คุณสามารถติดตั้งได้โดยคำสั่งที่เหมาะสม (ขึ้นอยู่กับ OS package manager ของคุณ) สามารถใช้คำสั่งใน Terminal ของคุณ ยกตัวอย่างเช่นใน Ubuntu/Debian ที่เป็น Linux สามารถใช้คำสั่งตามนี้

sudo apt-get install openssl

เมื่อทำการติดตั้งเรียบร้อยแล้ว ไฟล์ต่างๆที่เกี่ยวข้องกับ OpenSSL จะแสดงอยู่ใน home directory ของเครื่องของคุณ

  1. ลำดับแรกคุณต้องทำการสร้าง SSH private key สำหรับ root certificate ของคุณ (จะใช้ในการสร้าง certificate ทั้งหมด) สามารถสร้างตามคำสั่งด้านล่างนี้
openssl genrsa -out {filename} {length}

{filename} – ชื่อของคีย์ที่สร้าง .key (Ex. rootCA.key)
{length} – ความยาวของ private key หน่วยเป็น bits (Ex. 2048)

  1. ถัดไปคุณควรสร้าง root CA certificate โดยใช้ key ที่เตรียมไว้ โดยใช้ req command โดยใช้ตัวเลือก x509 เพื่อใช้ในการออก self-signed root certificate แทนที่ certificate request
openssl req -x509 -new -key {keyname} -days {days} -out {filename}

{keyname} – ชื่อ root key ของคุณ (ชื่อที่คุณได้ตั้งไว้ในขั้นตอนก่อนหน้านี้ Ex. rootCA.key)
{day} – จำนวนวันที่ certificate ปัจจุบันจะสามารถใช้งานได้
{filename} – ชื่อของ cetificate ที่เป็น .crt (Ex. rootCA.crt)
ตั้งค่ารายละเอียดที่จำเป็นสำหรับ CA certficate โดยการตอบคำถามตามรายการที่ปรากฎ

หลังจากใช้คำสั่งข้างต้นเรียบร้อยแล้วจะได้ self-signed root certificate สำหรับ CA ของคุณ

  1. ตอนนี้คุณสามารถสร้าง private key และ self-signed certificate สำหรับโดเมนที่คุณซื้อมา เรามาเริ่มสร้าง key โดยการสร้างวิธีเดียวกันกับการสร้าง root
openssl genrsa -out {filename} {length}

{filename} – ชื่อของคีย์ที่สร้าง .key (Ex. host.key)
{length} – ความยาวของ private key หน่วยเป็น bits (Ex. 2048)

Note: คุณไม่ควรป้องกันคีย์ของคุณด้วยรหัสผ่าน มิฉะนั้นจะทำให้คุณได้รับ error ระหว่างที่เพิ่ม key เข้าไปที่หน้าจัดการของ Ruk-Com Cloud

  1. ถัดไปทำการรันคำสั่งต่อไปที่นี้สร้างไฟล์ certificate signing request (CSR)
openssl req -new -key {keyname} -out {filename}

{keyname} – ชื่อ root key ของคุณ (ชื่อที่คุณได้ตั้งไว้ในขั้นตอนก่อนหน้านี้ Ex. host.key)
{filename} – ชื่อขอไฟล์ output ที่เป็น .csr (Ex. host.csr)
ให้คุณทำการตอบคำถามตามรายการที่ปรากฎเพื่อใช้เป็นข้อมูลของคุณในการสร้าง certificate

Note: ตัวแปร Common name ควรเป็นชื่อเดียวกับชื่อโดเมนที่คุณต้องการใช้งาน มิฉะนั้น certificate ของคุณจะไม่สามารถใช้งานได้

  1. ขั้นตอนสุดท้าย คือการสร้าง self-signed certificate ของคุณ โดยใช้ root CA certificate เราจะใช้คำสั่ง x509 กับตัวเลือกตามนี้
    • -req – หมายถึง ต้องการ format ของ input file ที่ใช้ในการขอ certificate
    • -CAcreateserial – กำหนดค่าเริ่มต้นของการสร้างไฟล์ CA serial number (ถ้าไม่มีไฟล์อยู่)
openssl x509 -req -in {requestname} -CA {CA_certificate} -CAkey {CA_key} -CAcreateserial -out {filename} -days {days}

{requestname} – ชื่อของไฟล์ .csr ที่ใช้เป็น input request (Ex. host.csr)
{CA_certificate} – กำหนด CA certificate ที่จะใช้ในการขอ certificate (Ex. rootCA.crt)
{CA_key} – ชุดของ CA private key ที่ใช้กับการขอ certificate (Ex. rootCA.key)
{filename} – ชื่อของไฟล์ .crt (Ex. host.crt)
{day} – จำนวนวันที่ certificate ปัจจุบันจะสามารถใช้งานได้

หลังจากดำเนินการตามขั้นตอนข้างต้นคุณจะมี self-signed SSL certificate สำหรับใช้งานใน application ของคุณเรียบร้อยแล้ว

Elastic VPS

คุณสามารถสร้าง self-signed certificate โดยใช้ Elastic VPS server สามารถดำเนินการได้ดังนี้

  • สร้าง environment ที่มี Elastic VPS ภายใน
  • เชื่อมต่อ Elastic vps ด้วยวิธีที่ต้องการ (ใช้ Public IP หรือ ใช้ผ่าน SSH Gateway)
  • เข้า OpenSSL shell ด้วยคำสั่ง openssl ที่เกี่ยวข้อง
  • สร้าง self-signed certificate ตามขั้นตอนนี้ Linux/MacOS/FreeBSD (ข้อแตกต่างเพียงอย่างเดียวคือคำสั่งทั้งหมดควรดำเนินการโดยไม่มีคำ openssl ที่จุดเริ่มต้นเนื่องจากคุณอยู่ในเชลล์ OpenSSL แล้ว)
  • เมื่อดำเนินการสร้างเสร็จสิ้นคุณจะต้องดาวน์โหลดไฟล์ certificate ที่สร้างขึ้น (เช่นผ่าน Configuration File Manager) เพื่อนำไปใช้กับ environment ที่ต้องการใช้งานในภายหลังได้

Attach Certificates

ตอนนี้ ทำตามขั้นตอนสำหรับการอัปโหลด SSL แบบกำหนดเองอื่น ๆ

  • Adjust Environment Topology
  • Domain Name and A Record Settings
  • Upload Certificate to the Environment

เพียงเท่านี้ หากคุณใส่ชื่อโดเมนของคุณที่กำหนดไว้ ( หรือเรียกใช้งานผ่าน ip ) ลงไปที่เบราว์เซอร์ของคุณโดยใช้โปรโตคอล https:// คุณจะเห็นข้อความแจ้งเตือนให้คุณทราบว่า SSL certificate ของคุณไม่น่าเชื่อถือ

เมื่อพบการแจ้งเตือนให้กดไปที่ “Process anyway” เพื่อดำเนินการต่อไป (หรือปุ่มที่คล้ายกันขึ้นอยู่กับเบราว์เซอร์ของคุณ)

Note: สำหรับบางเบราว์เซอร์ (เช่น Mozilla FireFox) แม้ว่าคุณจะตัดสินใจดำเนินการต่อคุณจำเป็นต้องเพิ่มหน้านี้ในรายการข้อยกเว้นของเบราว์เซอร์ก่อนจึงจะดำเนินการต่อได้

หลังจากนั้นคุณจะถูกเปลี่ยนเส้นทางไปยังไซต์ของคุณผ่านโปรโตคอลที่เข้ารหัส

ตอนนี้คุณสามารถมั่นใจได้ว่าการโต้ตอบทั้งหมดกับแอปพลิเคชันของคุณจะดำเนินการอย่างปลอดภัย