วิธีการสร้าง Self-Signed Certificate สำหรับเว็ปไซต์บนเครื่องที่ใช้ Ubuntu
Feisty Fawn สำหรับบทความนี้ผมขอไม่กล่าวถึงการลง Apache2, PHP5 และ
MySQL นะครับ จะกล่าวถึงเฉพาะการสร้าง Self-Signed Certificate เท่านั้น
- ถ้า Apache ที่ลงไว้แต่ยังไม่ได้ Enable mod_ssl ก็ให้เปิดใช้งานด้วยคำสั่ง
sudo a2enmod ssl - เริ่มด้วยการสร้าง Private Key สำหรับเครื่องเซิร์ฟเวอร์ หรือเครื่องที่เรารัน
เว็ปเซิร์ฟเวอร์$ sudo openssl genrsa -des3 -out server.key 1024เมื่อโปรแกรมให้เราใส่ pass phrase ซึ่งเราจะใส่หรือไม่ใส่ก็ได้
- จากนั้นก็สร้าง Certificate File ขี้นมาด้วยคำสั่ง
$ sudo openssl req -new -x509 -nodes -sha1 -days 365 -key server.key -out server.crtซึ่งมันจะถาม Pass Phrase ที่เราตั้งไว้ในขึ้นตอนที่แล้วและให้เราใส่ชื่อโดเมนที่
เราต้องการจะใช้งาน SSL ตอนที่โปรแกรมให้เราใส่ Common Name ในที่นี้ผม
จะใส่เป็น *.mydomainname.com เผื่อไว้ใช้กับsubdomain ได้ด้วย - ให้ทำการสร้างไดเร็กทอรี่ /etc/apache2/ssl แล้วคัดลอกไฟล์ทั้งสองไปยัง
ไดเร็กทอรี่ที่สร้างขึ้น$ sudo mkdir /etc/apache2/ssl $ sudo mv *.crt /etc/apache2/ssl $ sudo mv *.key /etc/apache2/ssl $ sudo chmod 400 /etc/apache2/ssl/*.key - ถ้าในขั้นตอนแรกเรากำหนด Pass Phrase ไปด้วย ทุกครั้งที่ทำการ
restart apache จะมีการถาม pass phrase ทุกครั้ง ดังนั้นเพื่อให้เราไม่ต้องเสีย
เวลาใส่ pass pharse ก็ให้้เราสร้างไฟล์ /etc/apache2/ssl/password.sh
ขึ้นมา แล้วแก้ไขไฟล์โดยพิมพ์คำสั่งตามด้านล่างลงไป แต่ให้เปลี่ยน password
เป็น pass pharse ที่เราได้ระบุไว้นะครับ#!/bin/bash echo "password";จากนั้นก็ให้แก้ไขไฟล์ /etc/apache2/mods-enabled/ssl.conf ให้มองหา
บรรทัดตามด้านล่างนี้SSLPassPhraseDialog builtinแล้วแก้เป็น
SSLPassPhraseDialog exec:/etc/apache2/ssl/password.shที่ทำแบบนี้เพื่อแทนที่ apache จะรอถาม pass pharse ทุกครั้งที่ start/restart
ก็ให้มันไปรัน script ที่เราสร้างไว้แทน - จากนั้นให้เราทำการแก้ไขไฟล์ /etc/apache2/ports.conf ตามด้านล่าง
Listen 80 Listen 443แล้วจึงแก้ไขไฟล์คอนฟิกของเว็ปไซต์ในที่นี้ของผมจะอยู่รวมกันในไฟล์
/etc/apache2/sites-available/default ซึ่งบางคนอาจแยกคอนฟิกของแต่ล่ะ
เว็ปเป็นไฟลๆ์แยกกัน ก็ให้เปิดแก้ไขคอนฟิกเว็ปที่ต้องการใช้งาน SSL โดยแก้ไข
คอนฟิกดังนี้<VirtualHost *:443> ... SSLEngine on SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key ... </VirtualHost>และในตอนต้นไฟล์ /etc/apache2/sites-available/default ต้องมีคำสั่งตาม
ด้านล่างด้วยนะครับNameVirtualHost *:80 NameVirtualHost *:443
จากนั้นก็สั่ง restart apache ได้เลย
sudo /etc/init.d/apache2 restart
เสร็จแล้ว เราก็จะสามารทดสอบและพัฒนาเว็ปซึ่งจำเป็นต้องมีส่วนที่ใช้งานผ่าน SSL ได้
เอกสารอ้างอิง : Creating Self-Signed Certs on Apache 2.2


