2007/Apr/23

มาทำ https ให้กับ website กันครับ
 

หวัดดีครับเพื่อนๆ วันนี้ผมขอมาแนว web server กันดูมั่งละกันครับ แบบว่าเรื่องนี้ได้ manual ประกอบการเขียนมาจาก คุณ neutron แห่ง debianclub.com กับคู่มือ ubuntu server guide ของทาง ubuntu official (แบบว่าเอาของทั้งสองที่มาลองทำตามดูแล้วก็ยำรวมๆกันมาให้เพื่อนๆได้ลอง solo ตามกันครับ) ก็คิดว่าน่าจะพอโดนใจกันบ้างล่ะ
* ปล. ขอขอบคุณ manual จากทั้งสองแหล่งครับผม ^_^

 

วิธีทำเลยดีกว่า

 
  • step 1: sudo aptitude install apache2 openssl > ลง package ที่จะใช้ทำ web server กะ ssl ซะ

  • step 2:
    sudo gedit /etc/apache2/ports.conf > เข้าไปแก้ให้พอร์ตในการใช้งานของ web server
    โดยแก้ไขเยี่ยงนี้ครับ
    Listen 80 (ของเดิม)
    เป็น
    Listen 80
    Linten 443 (add เพิ่มมาอีกบรรทัด) > พอร์ตเบอร์ 443 เป็นพอร์ต https อ่ะครับ
  • step 3: sudo a2enmod ssl > เนื่องด้วย apache ทำงานในลักษณะ modular (add module เพิ่มได้ถ้าอยากเพิ่ม feature ในการทำงาน) ในกรณีนี้เราลง ssl ไปแล้ว พออยากให้มันทำงานกะ apache ก็เลยต้อง enable module สักกะหน่อย โดย a2enmod ssl = enable module ssl ให้ apache2 นั่นเอง แต่ถ้าเกิดอยากจะปิดการทำงาน module ก็ใช้เป็น a2dismod ssl ซะเป็นอันจบ
    * ปล. module ที่ enable เข้าไปให้กับ apache จะไปเสนอหน้าอยู่ใน folder /etc/apache2/mods-enables นะครับ เข้าไปดูได้นะ

  • step 4:
    ขั้นต่อไปก็ต้องมานั่ง generate key กันล่ะครับ แบบว่า https มันต้องใช้ key ในการเข้ารหัส
    sudo openssl genrsa -des3 -out server.key 1024 > เป็นการสั่งให้ generate private key หลังจาก enter มันจะบอกให้เรากรอกวลีอะไรบางอย่างลงไป ซึ่งมันจะเอาไอ้คำนี้ไปเป็นส่วนในการ gennerate private key (ใช้คำยาวๆ มีทั้งตัวเลข ตัวหนังสือ สัญลักษณ์ ก็จะดีนะครับ จะได้ security หน่อยน่ะ)

    sudo openssl req -new -key server.key -out server.csr > เป็นการเอา private key ที่สร้างตอนแรกมา generate public key พอ enter เสร็จ เดี๋ยวมันจะมีการถามไอ้วลีที่เรากรอกตอน generate private key เมื่อกี้นี้ก็กรอกลงไปซะ หลังจากนั้นมันจะถามค่าพวก company name , email address ,ชื่อ-นามสกุลเรา ,etc. ก็กรอกไปตามจริงนั่นแหละครับ ชิวๆ

    sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
    > เป็นการ generate root CA key (ใน manual มันเรียกว่า self-signed certificate)ก็ให้กรอกค่าวลีค่าเดิมที่กรอกตอนทำ private key อีกตามเคย เหนื่อย
    * ไอ้เลข 365 ข้างหลัง days หมายถึงอายุของ key น่ะครับ (จริงๆ apache มันมี module สำหรับ generate key ให้ด้วยนะ แบบว่าไม่ต้องมานั่ง generate อะไรกันมากมายแบบนี้น่ะ ไปลองกันดูได้นะครับ ของผมขอแบบนี้ละกัน)


  • step 5:
    หลังจาก generate key ทั้งหมดเสร็จแล้ว ก็ได้เวลาติดตั้งกันแล้วครับ อิอิ
    sudo cp server.crt /etc/ssl/certs
    sudo cp server.key /etc/ssl/private

  • step 6:
    เพื่อความอยู่รอดปลอดภัยของ web server ท่าน กรุณา add ไอ้ 4 บรรทัดต่อไปนี้ลงไปใน /etc/apache2/sites-available/default ด้วยนะครับ
    SSLEngine on
    SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key

    * ไอ้ 4 บรรทัดข้างบนให้ใส่ไว้ใต้บรรทัด DocumentRoot นะครับ

  • step 7:
    sudo /etc/init.d/apache2 restart > restart apache สักรอบท่าจะดี ( ตอนผม restart มันขึ้น prompt มาถามค่าวลีตอน generate private key ที่เราเคยกรอกด้วยน่ะครับ ไม่งั้น restart ไม่ได้)

  • step 8:
    ทีนี้ก็ลองเรียกหน้า web ดูหน่อยว่า work มะ
    ใน url พิมพ์ https://your_hostname เป็นอันเห็นผล
 

 

 

*ปล. จริงๆการที่จะทำ web server มันจะต้องติดตั้งและ configure package อะไรมากกว่านี้น่ะครับ เช่น php , mysql , etc ก็ไปลองติดตั้งและปรับแต่งกันเอาเองนะครับ ของผมเอาแค่ส่วนของการติดตั้ง https เข้ากับ apache พอ เอาไว้เดี๋ยวจะทยอยเขียนเรื่องแนวๆนี้เป็นระยะๆนะครับ ^ _ ^


edit @ 2007/04/25 17:47:00
ชื่อ: 
เว็บไซต์: 
คอมเมนต์:




smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

<< Home