มาทำ 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

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <i> <center> <span> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <br> <dt> <dd> <object> <embed> <hr> <img> <blockquote> <b> <u> <del> <div> <p> <table> <tr> <td> <font>

More information about formatting options