Ubuntu 7.04 : วิธีสร้าง Self-Signed Certs สำหรับเว็ปไซต์

Tag :
วิธีการสร้าง Self-Signed Certificate สำหรับเว็ปไซต์บนเครื่องที่ใช้ Ubuntu Feisty Fawn สำหรับบทความนี้ผมขอไม่กล่าวถึงการลง Apache2, PHP5 และ MySQL นะครับ จะกล่าวถึงเฉพาะการสร้าง Self-Signed Certificate เท่านั้น
  1. ถ้า Apache ที่ลงไว้แต่ยังไม่ได้ Enable mod_ssl ก็ให้เปิดใช้งานด้วยคำสั่ง
    sudo a2enmod ssl
  2. เริ่มด้วยการสร้าง Private Key สำหรับเครื่องเซิร์ฟเวอร์ หรือเครื่องที่เรารัน เว็ปเซิร์ฟเวอร์
    $ sudo openssl genrsa -des3 -out server.key 1024
    เมื่อโปรแกรมให้เราใส่ pass phrase ซึ่งเราจะใส่หรือไม่ใส่ก็ได้
  3. จากนั้นก็สร้าง 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 ได้ด้วย
  4. ให้ทำการสร้างไดเร็กทอรี่ /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
  5. ถ้าในขั้นตอนแรกเรากำหนด 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 ที่เราสร้างไว้แทน
  6. จากนั้นให้เราทำการแก้ไขไฟล์ /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