เปิดใช้งาน SSL บน Apache

https or ssl

ติดตั้ง Apache

การติดตั้ง Apache หลายคนอาจจะติดตั้งต่างโฟลเดอร์กันไป ก็ขอให้ไปเปลี่ยน path ให้ถูกต้องในไฟล์ config ไม่อย่างนั้นการทำงานก็อาจจะไม่ได้ผล. การตั้งค่าต่างๆสำหรับเรียก http ธรรมดาจะไม่ขอเอ่ยถึงในนี้นะครับ เพื่อให้เนื้อหาอยู่ในขอบเขต

  1. ผู้ใช้ Windows สามารถดาวน์โหลด Apache ได้จาก Apache lounge หรือ Apache haus ก็ได้เช่นกัน
  2. แตกไฟล์ลงใน C:\wwwserver\apache\Apache24 ซึ่งเมื่อเปิดโฟลเดอร์นี้ดูจะต้องพบโฟลเดอร์ conf, logs, htdocs หลักๆเหล่านี้ทันที
  3. ปรับแต่งจนเรียกใช้งาน http:// ธรรมดาให้ได้เสียก่อนจึงเริ่มขั้นตอนถัดไป
  4. คลิกขวาที่ปุ่ม Start (Windows) แล้วคลิกที่ Command Prompt (Admin) หรือเปิด Command Prompt แบบ admin
  5. เข้าไปในโฟลเดอร์ cd C:\wwwserver\apache\Apache24\bin
  6. สั่ง httpd -k install เพื่อติดตั้ง Apache ลงใน Windows Services โดยเปลี่ยนจาก install เป็น uninstall เพื่อเอาออก

เปิดใช้งานโมดูล

ลบเครื่องหมายคอมเมนท์ (#) หน้าบรรทัดเพื่อเปิดใช้งานโมดูลเหล่านี้.

  1. ssl_module modules/mod_ssl.so
  2. socache_shmcb_module modules/mod_socache_shmcb.so

เปิด Include

  1. Include conf/extra/httpd-ssl.conf

OpenSSL, สร้าง certificate

สำหรับขั้นตอนนี้โปรดอ่านเพิ่มเติมจากบทความ สร้าง self-signed certificate และทำให้เบราว์เซอร์เชื่อถือ ซึ่งจะปรับปรุงทันสมัยที่สุดและมีรายละเอียดมากกว่า. สำหรับขั้นตอนดั้งเดิมขออ่านได้ในกรอบด้านล่างนี้.

กำหนด OPENSSL environment ให้กับ Windows

  1. คลิกขวาที่ My computer หรือ This PC สำหรับ Windows 8
  2. คลิกที่ Properties
  3. คลิกที่ Advanced system settings
  4. คลิกที่ Environment Variables...
  5. กดปุ่ม New... ที่ System Variables
  6. ช่อง Variable name: ใส่ OPENSSL_CONF
  7. ช่อง Variable value: ใส่ C:\wwwserver\apache\Apache24\conf\openssl.cnf
  8. กด OK ทั้งหมด

สร้าง Key สำหรับใช้กับ SSL

สร้างไฟล์ config สำหรับ openssl

สร้างไฟล์ไว้ใน C:\wwwserver\apache\Apache24\conf\server.cnf โดยกำหนดเนื้อหาต่อไปนี้. ทั้งนี้ขอให้ปรับแต่งแก้ไขตามเหมาะสม.

[req]
default_bits = 2048
prompt = no
default_md = sha256
x509_extensions = v3_req # The extensions to add to the self signed cert
distinguished_name = dn

[dn]
countryName = TH
stateOrProvinceName = Bangkok
localityName = City
emailAddress = webmaster@localhost.localhost
commonName = localhost.localhost

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = localhost
DNS.2 = localhost.localhost

โดยผู้อ่านสามารถแก้ไขชื่อจังหวัดหรือข้อมูลอื่นๆได้ อาจจะเพิ่มชื่อโดเมนต่อไปใน DNS.3 หรือมากกว่าก็ได้เช่นกัน.

สร้าง self signed certificate

จากนั้นทำตามขั้นตอนต่อไปนี้.

  1. เปิด command prompt (start > cmd)
  2. cd C:\wwwserver\apache\Apache24\bin
  3. openssl req -new -x509 -newkey rsa:2048 -sha256 -nodes -keyout ../conf/server.key -days 3650 -out ../conf/server.crt -config ../conf/server.cnf โดยอาจแก้ไขวันที่ 3650 (10 ปี) เป็นจำนวนวันอื่นๆตามเหมาะสม

หากไม่มีข้อผิดพลาดใดๆ ระบบจะทำการแสดงข้อความ writing new private key to '../conf/server.key' และไม่มีข้อความแสดงปัญหาใดๆ ก็เป็นอันเสร็จขั้นตอน.

ปรับแต่งไฟล์ Config SSL สำหรับ Apache

  1. เปิดไฟล์ C:\wwwserver\apache\Apache24\conf\httpd-ssl.conf ด้วย text editor แล้วแก้ไขตามรายการด้านล่าง รายการใดไม่พบอาจข้ามไปก่อน เมื่อเปิด Apache ไม่ได้จึงค่อยกลับมานำมันไปเพิ่ม.
  2. SSLCipherSuite ALL:!aNULL:RC4+RSA:+HIGH:+MEDIUM:+LOW:+EXP:+eNULL (อ้างอิงจากเว็บไซต์ของ Apache)
  3. SSLSessionCache "shmcb:C:/wwwserver/apache/Apache24/logs/ssl_scache(512000)"
  4. DocumentRoot "C:/wwwroot" ตำแหน่งนี้ ให้กรอกเป็นตำแหน่งโฟลเดอร์ www root ของคุณได้เลยครับ
  5. ServerName 127.0.0.1:443
  6. ServerAdmin my@emailaddress.tld
  7. ErrorLog "C:/wwwserver/apache/Apache24/logs/error.log"
  8. TransferLog "C:/wwwserver/apache/Apache24/logs/access.log"
  9. SSLEngine on
  10. SSLCertificateFile "C:/wwwserver/apache/Apache24/conf/server.crt"
  11. SSLCertificateKeyFile "C:/wwwserver/apache/Apache24/conf/server.key"
  12. CustomLog "C:/wwwserver/apache/Apache24/logs/ssl_request.log"

ทดลอง start Apache ถ้าหาก Apache เปิดใช้งานอยู่ก็ให้ทำการ restart Apache แทน.

เมื่อพบว่าเริ่ม Apache ไม่สำเร็จ และทำตามขั้นตอนปรับแต่ง Config สำหรับ SSL แล้ว ขอให้ตรวจสอบดูใน Apache logs. ถ้าหากพบว่ามีการแจ้งเตือนว่า SSLPassPhraseDialog builtin is not supported on Win32 ให้แก้ไขโดยทำดังต่อไปนี้
(อ้างอิงจาก http://www.entrust.net/knowledge-base/technote.cfm?tn=5634)

  1. เปิดไฟล์ C:\wwwserver\apache\Apache24\conf\httpd-ssl.conf ด้วย text editor
  2. หาบรรทัดที่มีคำว่า SSLPassPhraseDialog
  3. ใส่เครื่องหมาย # ไว้ด้านหน้าบรรทัดเพื่อปิดใช้งาน

ทดลองเริ่ม Apache อีกครั้งก็น่าจะทำงานได้แล้วครับ.
*สำหรับขั้นตอนที่ 6 เข้าใจว่าอาจจะไม่ค่อยดีนักเนื่องจากลดความปลอดภัยลง แต่การทำอย่างนี้เพื่องาน development เท่านั้น ดังนั้นจึงไม่น่าเป็นห่วงเพราะมีผู้เข้าถึงงานของคุณผ่าน https:// ได้เพียงทีมงานเท่านั้น.


ดาวน์โหลด ดาวน์โหลดแพค Windows Apache+PHP โดยมีทั้ง PHP 5.5 และ 5.6 รวมถึงวิธีการติดตั้งอีกนิดหน่อยเพื่อใช้งานได้ทันที
รายละเอียด
Apache 2.4 => [auto index หรือ fancy index, mod rewrite, ssl]
PHP 5.5 & 5.6 => [php.ini สำหรับการพัฒนาโปรแกรมโดยเฉพาะ แสดงทุกประเภทของ Error ทั้ง notice info warning strict,
มีการปิด output buffer เพื่อให้ออกแบบการทำงานให้รอบคอบมากกว่าที่จะพึ่งพามัน,
จำกัดขนาดอัพโหลดและโพสท์ (อยากได้มากสำหรับแต่ละโปรเจ็คต้องเพิ่มเองผ่าน .htaccess จะได้ไม่พลาดตอนนำไปใช้จริง),
จำกัดขนาด memory (เหตุผลเดียวกับจำกัดขนาดอัพโหลด),
เปิดใช้ extension ที่อาจจะต้องใช้บางส่วน (สำหรับ cURL โปรดอ่านวิธีติดตั้งในไฟล์),
ปรับ date.timezone และอื่นๆ
]
MySQL => ไม่มีให้ครับ ไฟล์ใหญ่เกิน และบางคนก็ใช้ MariaDB แทน จึงต้องขอให้ติดตั้งแยกเอาเองนะครับ.

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

คุณอาจใช้แท็กHTMLและแอททริบิวต์เหล่านี้: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>