มาทำ https ให้กับ website กันครับ
Posted in:
หวัดดีครับเพื่อนๆ วันนี้ผมขอมาแนว 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 อ่ะครับ
*ปล. ubuntu กะ debian เวอร์ชันหลังๆมานี้ไม่ต้อง add บรรทัดเพิ่มนะครับมันจะมีมาให้เลยหลังลง openssl
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 หลังจากนั้น ให้เรากรอกวลีอะไรบางอย่างลงไป ซึ่งมันจะเอาไอ้คำนี้ไปเป็นส่วนในการ 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: $sudo pico /etc/apache2/sites-available/default > เปิดไฟล์ deafult ขึ้นมาแก้ไขเพื่อให้ระบบสามารถใช้งาน https ได้
โดยแก้บรรทัด
NameVirtualHost *
<VirtualHost *>
ให้เป็น
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
และ copy ข้อความข้างล่างนี้ไปแปะไว้ท้ายไฟล์ default ตรงข้างล่างสุดของไฟล์
<VirtualHost *:443>
ServerAdmin webmaster@localhost
...
...
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>
โดย . . . หมายถึงละไว้ในฐานที่เข้าใจ หรือว่ากันง่ายๆ คือ เวลาทำจริงก็อย่าลืม copy ค่าพารามิเตอร์ที่อยู่ภายใน
<VirtualHost *:80> มาวางด้วยล่ะ
step7: 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 พอ เอาไว้เดี๋ยวจะทยอยเขียนเรื่องแนวๆนี้เป็นระยะๆนะครับ ^ _ ^


หาวิธีทำอ
หาวิธีทำอยู่ตั้งนาน สุดท้ายก้อมาเจอที่นี่นี่เอง
ขอบคุณคับ ทำได้แล้ว แต่ว่าทุกครั้งที่รีสตาร์ท server apache จะถามพาสเวิร์ดตลอดเลยครับ
จะทำให้ไม่ต้องถามพาสเวิร์ดตอนนี้ได้หรือเปล่าครับ
--
Elen síla lumenn' omentielvo
ดวงดาวจรัสแสง ยามเราพบกัน
ถ้าไม่อยากให้มันถาม passwd
สั่ง gen rsa โดยไม่ต้องมี -des3 ครับ
openssl genrsa -out server.key 1024
Post new comment