SSL Offload ด้วย nginx
ขั้นแรกก็ต้องมี SSL Certificated ก่อน
ถ้าทำแบบ self-signed ก็ใช้คำสั่ง
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout <domain name>.key -out <domain name>.crt
เช่น
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout akumo.com.key -out akumo.com.crt
เสร็จแล้วจะได้ file มา 2 files คือ .key และ .cert (key เป็น private key, cert เป็น public key)
ให้นำ 2 files นี้ไปเก็บไว้ใน directory ที่ต้องการ เช่น /opt/certs โดยไม่ควรวางไว้ที่เดียวกับ config file ของ nginx
แต่หากจะใช้ cert แบบที่ถูกต้องก็ต้องสร้าง private key ขึ้นมาเองก่อนด้วยคำสั่ง
openssl genrsa -out <domain name>.key 2048
จากนั้นให้นำ key ที่ได้นำไปสร้างเป็น .csr file ด้วยคำสั่ง
openssl req -new -key <domain name>.key -out <domain name>.csr
แล้วกรอกข้อมูลลงไป
Country Name : TH
State or Province : Bangkok
Locality : Silom
Organization Name : Akumo Inc.
Organizational Unit : IT
Common Name : akumo.com
Email : akumo@yahoo.com
จากนั้นเมื่อได้ .csr file แล้วก็ส่งให้ทาง CA Vendor นำไปสร้างเป็น public key ส่งกลับมาให้เรา
ถึงขั้นตอนนี้เราก็จะได้ file ทั้ง 2 files ที่ต้องการแล้ว สิ่งที่ต้องทำต่อคือไปแก้ไข config ของ nginx โดยมีสิ่งที่ต้อง config ดังนี้
- ให้แก้ไขบรรทัด server_name โดยให้ใส่ชื่อของ domain เราแทนเครื่องหมาย “_” (under score) เช่น
server_name akumo.com;
2. uncomment port 443
listen 443 ssl default_server;
3. เพิ่มข้อมูลบอกตำแหน่งของ certificate file
ssl_certificate และ ssl_certificate_key
เสร็จแล้วให้ restart service ของ nginx ใหม่อีกครั้ง (หรือ reload)
service nginx restart
reference :