Apache2 + SSL
- ติดตั้ง Apache2 + OpenSSL
# aptitude install apache2 openssl
ผ่านขั้นตอนนี้ เราก็ได้ web server ที่คอยบริการ HTML ได้แล้ว แต่จุดประสงค์เรายังไม่ลุล่วง ต้องไปต่อ
- ตรวจสอบให้แน่ใจว่า port 443 จะทำงานเมื่อเปิดใช้งานมอดูล SSL ใน Apache2
# cat /etc/apache2/ports.conf Listen 80 <IfModule mod_ssl.c> Listen 443 </IfModule>
ถ้ามีไม่เหมือนในตัวอย่าง ให้เพิ่มเข้าไป ใน Apache2 รุ่นหลัง ๆ ใน Debian ตั้งค่าดังกล่าวเป็นค่าเริ่มต้นอยู่แล้ว
หลังจากนั้นก็เปิดใช้งานมอดูล
# a2enmod ssl Module ssl installed; run /etc/init.d/apache2 force-reload to enable.
หลังจากนี้ ก็สั่งตามที่เขาบอก
# /etc/init.d/apache2 force-reload
- สร้าง self-signed SSL Certificate (เขาบอกว่าใช้ทดสอบ .. แต่ของเราเอาใช้งานจริง)
# cd /etc/apache2 # openssl req -new -x509 -days 365 -nodes -out server.crt \ -keyout server.key
หลังจากนั้น จะมีหน้าจอขึ้นมาให้กรอกข้อมูล และในส่วนของ CommonName ให้กรอกชื่อ Host อย่างเช่น
www.examples.com
- ตั้งค่า VirtualHost เพื่อให้สามารถใช้ https ได้
# vi /etc/apache2/sites-available/default
เปลี่ยนจาก
NameVirtualHost * <VirtualHost *>
เป็น
NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80>
คัดลอกข้อความตามตัวอย่างข้างล่างนี้ และแปะไว้ล่างสุด
<VirtualHost *:80> ServerAdmin webmaster@localhost ... ... </VirtualHost>
แล้วแก้ไขเพิ่มเติมดังนี้
<VirtualHost *:443> ServerAdmin webmaster@localhost ... ... SSLEngine on SSLCertificateFile /etc/apache2/server.crt SSLCertificateKeyFile /etc/apache2/server.key </VirtualHost>
- สั่ง reload Apache2
# /etc/init.d/apache2 reload Reloading web server config... XXXX
- เข้า web browser และทำการทดสอบ
https://[hostname]
ถ้าทดสอบแล้ว ขึ้นหน้าต่างให้เลือกตอบตกลง และจะขึ้นรูปแม่กุญแจ ก็เป็นอันจบ ....
Apache2 + SSL พร้อมใช้งานแล้วครับผม
References:
- Apache SSL/TLS Strong Encryption: FAQ - http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html
Topic:
- neutron's blog
- Log in to post comments
![]() |
ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้ |
Comments
Re: Apache2 + SSL
on 9 October, 2007 - 16:54 Permalink
ทำไมมันยุ่งยากยังงี้อะครับ.
apache1 ไม่เห็นต้องทำอะไรเลย, แค่ลง package apache-ssl ก็ใช้ได้เลย
Re: Apache2 + SSL
on 10 October, 2007 - 18:18 Permalink
ถ้าจำไม่ผิด ใน apache1 จะมี 2 solution คือใช้ apache-ssl และใช้ mod_ssl โดย apache-ssl จะสร้าง service ใหม่ต่างหากจาก apache ส่วน mod_ssl ก็อยู่ใน service ของ apache เดิม เพียงแต่ต้องจัดการ virtual host นิดหน่อย
ก็ปรากฏว่า apache-ssl เขาไม่ทำต่อใน apache2 มั้งครับ ก็เลยเหลือ mod_ssl อย่างเดียว
ปล. แต่ลง apache-ssl สมัย apache1 ก็ยังต้องทำ SSL certificate ในขั้นที่ 3 เพิ่มอีกอยู่ดีนะครับ ถ้าไม่ต้องการให้มี warning ที่ client เกี่ยวกับ certificate ที่ใช้ไม่ได้
Re: Apache2 + SSL
on 10 October, 2007 - 19:39 Permalink
อืมๆ, เราลองเข้าไปดูของ redhat enterprise แล้ว, มันมี package ชื่อ mod_ssl.
แล้ว package mod_ssl มันใส่ virtualhost ไว้ใน /etc/httpd/conf.d/ssl.conf ให้แล้ว.
แล้วก็ postinstall script ของมันก็ยัง gen ssl key ให้เลยด้วย.
RHEL ทำ server ง่ายกว่าจริงๆ ด้วย, มัน work out of the box เลย.
เราก็ไปดูใน ubuntu มันก็น่าจะ set virtual host ไว้ให้เลยนี่นา, เอ ทำไมไม่ทำไว้,
$ dpkg -L apache2-common | grep ssl
...
/etc/apache2/mods-available/ssl.conf
...
/usr/sbin/apache2-ssl-certificate
...
/usr/share/doc/apache2/examples/ssl.conf.gz
/usr/share/doc/apache2/examples/ssl-std.conf.gz
เข้าไปดูไฟล์ /usr/share/doc/apache2/examples/ssl.conf.gz, อ้าว ไฟล์ตัวอย่างนี้ก็ทำ virtual host สำหรับ ssl ไว้ให้แล้วนี่นา, แล้วทำไมมันถึงไม่เอาในไฟล์ตัวอย่างนั้นมาใส่ใน /etc/apache2/mods-available/ssl.conf เลยนะ.
อืมๆ, เข้าไปดูไฟล์ /usr/sbin/apache2-ssl-certificate, อ้าว นี้มัน script สำหรับ gen ssl key นี่นา, งี้ก็น่าจะใช้ script นี้ได้เลยดิ.
แล้วทำไม debian ถึงไม่แยก mod_ssl ออกมาเป็น อีก package นึงหละเนี่ย, จะได้ gen key ใน post install script เลย.
Re: Apache2 + SSL
on 10 October, 2007 - 22:12 Permalink
apache2-ssl-certificate นี่ ไม่มีใน debian ครับ สงสัยว่าเป็น ubuntu change ที่ยังไม่เข้า debian
เรื่อง example ssl.conf.. บางที นี่อาจเป็นข้อมูลสำหรับปรับบทความไหมครับ? แล้วแต่นิวตรอนละกัน แต่ที่ debian ไม่เอามาใส่ใน /etc เลยนี่ ผมยังไม่รู้เหตุผลของเขาเหมือนกัน แต่เดาเอาว่าเป็นเพราะ web server สามารถโฮสต์ virtual host ได้หลายโฮสต์ ซึ่งอาจไม่จำเป็นต้องเปิด ssl ทุกโฮสต์ละมัง
เรื่องแยก mod_ssl ออกมาต่างหาก.. น่าสนใจครับ ไม่รู้มีใคร file bug เรื่องนี้ไปหรือยัง อีกทางหนึ่งที่เป็นไปได้คือ เพิ่มคำถามใน debconf ของ apache2 เอง ว่าจะเซ็ต SSL หรือเปล่า
Re: Apache2 + SSL
on 11 October, 2007 - 10:40 Permalink
ลองเอา virtualhost ใน examples/ssl.conf.gz มาใส่ใน mods-available/ssl.conf แล้ว ก็ยังไม่เวิร์คซะทีเดียวครับ.
ลองไป comment NameVirtualHost ใน sites-available/default ออก ก็ใช้ได้.
ไม่เข้าใจเหมือนกันว่า NameVirtualHost ใช้ทำอะไร.
(ใน examples/ssl.conf.gz ไม่ได้ใส่ NameVirtualHost ไว้.)
Re: Apache2 + SSL
on 10 October, 2007 - 21:17 Permalink
อืม, กลับไปดู postinst ของ apache-ssl (ubuntu), มันก็มี script ช่วย gen key อยู่ในนั้นอยู่แล้ว, ไม่ต้องมาสั่งเอง.
Re: Apache2 + SSL
on 10 October, 2007 - 21:45 Permalink
file bug เลยครับ :)
Re: Apache2 + SSL
on 22 January, 2008 - 14:13 Permalink
/etc/init.d/apache2 reload
Syntax error on line 87 of /etc/apache2/sites-enabled/000-default:
SSLEngine not allowed here
failed!
สั่งแล้วขึ้นอย่างนี้แสดงว่าเกิดจากอะไรอ่ะครับ
Re: Apache2 + SSL
on 11 October, 2007 - 15:07 Permalink
ดู changelog.Debian พบว่าเขาเคยใส่ไว้ใน postinst แล้ว, แต่เอาออก เพราะมี bug #231726
อยากจะ reopen bug ตัวนี้ และบอกให้เค้าแก้ปัญหาด้วยการแยก package mod_ssl ออกมา (พร้อมด้วยแก้ postinst script นิดหน่อย),
ว่าแต่ reopen bug นี่ทำไงครับ?
ปล. นั่งอ่าน bug report ย้อนหลัง, เหมือนว่าแต่ก่อน debian มันเคยใช้ apache2-ssl-certificate, แล้วตอนหลังเปลี่ยนมาใช้ make-ssl-cert ของ package ssl-cert แทน.
Re: Apache2 + SSL
on 11 October, 2007 - 20:22 Permalink
วิธี reopen bug คือส่งเมลไปที่ control at bugs dot debian dot org น่ะครับ ใส่เนื้อหาในเมลว่า
รายละเอียด: http://debianclub.org/node/86
Re: Apache2 + SSL
on 12 October, 2007 - 13:30 Permalink
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=168109#31 <-- มา reopen ตัวนี้แทนละ.