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

https or ssl

ก่อนอื่นต้องขออ้างอิงจากวิธีการเปิดใช้งาน SSL บน UwAmp ก่อนนะครับ ถ้าหากใครเคยทำจากบทความนั้นกับ Apache แล้วได้ผลก็ข้ามหน้านี้ไปได้เลยครับ. แต่ถ้าหากใครทำตามแล้วยังไม่ได้ ผมต้องรบกวนขอให้ลบไฟล์ server.* ทั้งหลายใน Apache24/conf ไปเสียก่อน เช่น server.crt, server.csr, ...

หมายเหตุ. ดาวน์โหลด Windows Apache+PHP ปรับแต่งสำเร็จแล้วได้เลย ณ ด้านล่างของหน้านี้

ติดตั้ง Apache

การติดตั้ง Apache หลายคนอาจจะติดตั้งต่างโฟลเดอร์กันไป ก็ขอให้ไปเปลี่ยน path ให้ถูกต้องในไฟล์ config ของคุณด้วยก็แล้วกัน ไม่อย่างนั้นการทำงานก็อาจจะไม่ได้ผล. และการอ้างอิง path ต่างๆต่อไปนี้ก็ขออ้างอิงจากตำแหน่งติดตั้งของผมเป็นหลัก แล้วคุณผู้อ่านก็เอาไปดัดแปลงหาตำแหน่งที่สัมพันธ์กันเองนะครับ ไม่ยากหรอก.
การตั้งค่าต่างๆสำหรับเรียก 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 environment ให้กับ Windows

  1. คลิกขวาที่ปุ่ม Start (Windows) แล้วคลิกที่ Command Prompt (Admin) หรือเปิด Command Prompt แบบ admin
  2. พิมพ์คำสั่งดังนี้ set OPENSSL_CONF=C:\wwwserver\apache\Apache24\conf\openssl.cnf จากนั้นถือเป็นอันเสร็จสิ้นการกำหนด OPENSSL environment

หรือกำหนดไปที่ Windows Environment Variables โดยตรง

  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

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

สร้างโดยใช้คำสั่ง batch

คัดลอกคำสั่งต่อไปนี้ไปสร้างไว้ในไฟล์ C:\wwwserver\apache\Apache24\bin\makeCert.bat

@echo off

REM copy from https://superuser.com/a/1210587/143540
REM IN YOUR SSL FOLDER, SAVE THIS FILE AS: makeCert.bat
REM AT COMMAND LINE IN YOUR SSL FOLDER, RUN: makecert
REM IT WILL CREATE THESE FILES: server.cnf, server.crt, server.key
REM IMPORT THE .crt FILE INTO CHROME Trusted Root Certification Authorities
REM REMEMBER TO RESTART APACHE OR NGINX AFTER YOU CONFIGURE FOR THESE FILES

REM PLEASE UPDATE THE FOLLOWING VARIABLES FOR YOUR NEEDS.
SET HOSTNAME=server
SET DOT=dev
SET COUNTRY=TH
SET STATE=Bangkok
SET CITY=City
SET ORGANIZATION=IT
SET ORGANIZATION_UNIT=IT Department
SET EMAIL=webmaster@%HOSTNAME%.%DOT%

(
echo [req]
echo default_bits = 2048
echo prompt = no
echo default_md = sha256
echo x509_extensions = v3_req
echo distinguished_name = dn
echo:
echo [dn]
echo C = %COUNTRY%
echo ST = %STATE%
echo L = %CITY%
echo O = %ORGANIZATION%
echo OU = %ORGANIZATION_UNIT%
echo emailAddress = %EMAIL%
echo CN = %HOSTNAME%.%DOT%
echo:
echo [v3_req]
echo subjectAltName = @alt_names
echo:
echo [alt_names]
echo DNS.1 = %HOSTNAME%.%DOT%
)>../conf/%HOSTNAME%.cnf

openssl req -new -x509 -newkey rsa:2048 -sha256 -nodes -keyout ../conf/%HOSTNAME%.key -days 3560 -out ../conf/%HOSTNAME%.crt -config ../conf/%HOSTNAME%.cnf

จากนั้นเปิด command prompt (start > cmd) แล้วพิมพ์ cd C:\wwwserver\apache\Apache24\bin และ makeCert

สร้างโดยทำเองทีละขั้นตอน

  1. เปิด command prompt (start > cmd)
  2. cd C:\wwwserver\apache\Apache24\bin
  3. openssl genrsa -des3 -out ../conf/server.key 3072 คำสั่งนี้จะถามรหัสผ่าน ให้ตั้งรหัสผ่าน เช่น pass ก็ได้ เนื่องจากเราใช้งานอยู่บน development server ไม่ได้เปิดให้บุคคลภายนอกเข้าถึง หรือคุณอาจตั้งให้ยากกว่านี้ก็ได้
  4. openssl rsa -in ../conf/server.key -out ../conf/server.pem
  5. openssl req -new -key ../conf/server.key -out ../conf/server.csr
  6. หากไม่พบ error ใดๆ ระบบจะให้เรากรอกข้อมูลเหล่านี้
    Country Name (2 letter code) [AU]: TH
    State or Province Name (full name) [Some-State]: Bangkok
    Locality Name (eg, city) []: City
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:
    Organizational Unit Name (eg, section) []:
    Common Name (eg, YOUR name) []: 127.0.0.1 (กรอกชื่อโดเมน *.name.tld หรือไอพีแอดเดรส)
    Email Address []: my@emailaddress.tld
    A challenge password []:
    An optional company name []:

    จากด้านบนนี้เป็นตัวอย่างเท่านั้น. รายการที่เว้นว่างหลังเครื่องหมาย : คือไม่ต้องกรอกก็ได้ เพื่อให้ใช้ค่าเดิม

  7. สร้าง Certificate ชั่วคราวสำหรับใช้งาน โดยกำหนดอายุสัก 1 ปี (365 วัน)
    openssl x509 -req -days 365 -in ../conf/server.csr -signkey ../conf/server.key -out ../conf/server.crt

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

  1. เปิดไฟล์ C:\wwwserver\apache\Apache24\conf\httpd-ssl.conf ด้วย text editor แล้วแก้ไขตามรายการด้านล่าง รายการใดไม่พบอาจข้ามไปก่อน เมื่อเปิด Apache ไม่ได้จึงค่อยกลับมานำมันไปเพิ่ม.
  2. SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  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. ใส่เครื่องหมาย # ไว้ด้านหน้าบรรทัดเพื่อปิดใช้งาน
  4. เปิด command prompt (start > cmd)
  5. cd C:\wwwserver\apache\Apache24\bin
  6. openssl rsa -in ../conf/server.key -out ../conf/server.key เพื่อเขียนคีย์ใหม่โดยเอา passphrase ออกไป*

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


Download ดาวน์โหลดแพค 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 แทน จึงต้องขอให้ติดตั้งแยกเอาเองนะครับ

สำหรับไฟล์นี้ นำไปใช้แล้วเป็นอย่างไรกันบ้างก็คอมเม้นท์บอกกันได้นะครับ.

 

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>