1.สร้าง directory เก็บไฟล์ certificate (ถ้ายังไม่มี)
sudo mkdir -p /etc/pki/tls/certs
sudo mkdir -p /etc/pki/tls/private
2.สร้าง self-signed certificate กับ private key ด้วยคำสั่งนี้
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/pki/tls/private/chaiyakul.com.key \
-out /etc/pki/tls/certs/chaiyakul.com.crt
จะถามข้อมูลบางอย่าง เช่น
- Country Name (2 letter code)
- State or Province Name
- Locality Name
- Organization Name
- Common Name (ยกตัวอย่าง ใส่
chaiyakul.com
หรือwww.chaiyakul.com
) - Email Address
กรอกข้อมูลตามจริงหรือเว้นว่างได้ (แต่ Common Name ต้องใส่โดเมนหรือ IP ที่ใช้งาน)
3.แก้ไขไฟล์ SSL config ให้ชี้ไปที่ไฟล์นี้ (ตามตัวอย่างก่อนหน้า)
SSLCertificateFile /etc/pki/tls/certs/chaiyakul.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/chaiyakul.com.key
4.ทดสอบ config Apache
sudo apachectl configtest
ถ้า Syntax OK
แสดงว่าไฟล์ config ถูกต้อง
5.รีสตาร์ท Apache
sudo systemctl restart httpd
หมายเหตุ
- Self-signed cert จะทำให้ browser แจ้งเตือนว่าไม่ปลอดภัย (untrusted) เพราะไม่ผ่าน CA ที่เชื่อถือได้
- เหมาะสำหรับทดสอบในเครื่องหรือระบบ internal
- หากจะใช้จริงบนอินเทอร์เน็ต ควรใช้ Let’s Encrypt เพื่อขอฟรี certificate ที่ trusted
ตำแหน่ง VirtualHost
ตำแหน่งของการกำหนด <VirtualHost *:443>
(SSL) อยู่ในไฟล์คอนฟิกของ Apache ครับ ขึ้นอยู่กับว่า Apache บนเครื่องคุณถูกตั้งค่าอย่างไร — โดยทั่วไปมักจะอยู่ในไฟล์เหล่านี้:
ตำแหน่งไฟล์สำหรับ VirtualHost SSL
แบบที่ 1: แยกไฟล์แต่ละ VirtualHost
/etc/httpd/conf.d/ssl.conf ← ไฟล์หลักสำหรับ SSL (CentOS/RHEL)
แนะนำให้เพิ่มหรือแก้ไข <VirtualHost *:443>
ในไฟล์นี้ หรือสร้างไฟล์ใหม่ใน /etc/httpd/conf.d/
เช่น:
/etc/httpd/conf.d/chaiyakul-ssl.conf
แบบที่ 2: รวมอยู่ใน httpd.conf
/etc/httpd/conf/httpd.conf
ถ้ามีการตั้ง SSL ในไฟล์นี้ (ไม่แนะนำ) ให้ใส่ <VirtualHost *:443>
ภายในหรือ Include
ไฟล์จาก conf.d/
✅ แนะนำ
สร้างไฟล์ใหม่ใน /etc/httpd/conf.d/
เพื่อแยก site ต่างๆ ชัดเจน เช่น:
sudo nano /etc/httpd/conf.d/chaiyakul-ssl.conf
แล้ววาง VirtualHost แบบนี้:
<VirtualHost *:443>
ServerName chaiyakul.com
ServerAlias www.chaiyakul.com
DocumentRoot /var/www/html/chaiyakul.com
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/chaiyakul.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/chaiyakul.com.key
<Directory /var/www/html/chaiyakul.com>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog logs/ssl_error_log
CustomLog logs/ssl_access_log combined
</VirtualHost>
เสร็จแล้วให้:
sudo apachectl configtest
sudo systemctl restart httpd