หมวดหมู่

การใช้ SSL ของ Apache (windows)

วันที่ 8 ต.ค. 53 + 00:00.00 , กลุ่ม Server Admin , ป้าย apache, ssl, windows

เกิดกระสันอยากใช้ ssl กับเค้าบ้าง เลยลองทดลองติดตั้งใช้งานดู คราวนี้จะได้ไฮโซเปลี่ยนจาก http: เป็น https: แล้ว ท่าทางจะดูดีมีชาติตระกูลขึ้นเยอะ


0. เกริ่นนำ ที่มาที่ไป

HTTPS หรือ SSL ย่อมาจาก ... อะไรไม่รู้ไปหาเอาเอง เข้า google จิ้มๆ เดี๋ยวข้อมูลก็ไหลออกมาเอง

แต่จุดสำคัญของมันก็คือการเข้ารหัสข้อมูลทำให้ข้อมูลที่เรารับส่งระหว่าง server <-> client นั้นมีความปลอดภัยมากขึ้น ซึ่งอาจจะป้องกันไม่ให้ข้อมูลเรา ที่อยู่ๆ โดนดักจับ รึหลุดไปถึงมือคนอื่นที่ไม่หวังดี สามารถอ่านง่ายโดยง่าย (คือ ถ้าไอ้คนที่ได้ข้อมูลเข้ารหัสนี้ไป มันมีความพยายามสูงหน่อย ผมว่า มันก็ถอดได้อยู่ดี)

แน่นอนเอาไปใช้กับพวก user/password หรือข้อมูลธุรกรรมต่างๆ ที่ต้องการความปลอดภัย


1. เริ่มจะติดตั้ง

SSL มันมีทั้งแบบฟรี และไม่ฟรี แต่งานนี้ขอเลือกใช้ตัวฟรีก่อน ตามความชอบส่วนตัว

สิ่งที่ใช้คือ OpenSSL ที่ติดมากับ Apache อยู่แล้ว (เวลาโหลด Apache ให้เลือกที่ + OpenSSL) จากนั้นก็ทำการติดตั้ง Apache ก็เรียบร้อยในขั้นแรก


2. สร้างไฟล์ Certificate

ไฟล์ Certificate เป็นไฟล์สำหรับเป็นกุญแจ เข้าและถอดรหัส ข้อมูลของเรานั่นเอง ... วิธีสร้างก็แสนง่าย

ให้เราเข้าไปดูในโฟล์เดอร์ที่ติดตั้ง Apache เมื่อครู่ ในโฟล์เดอร์ย่อย bin จะเห็นไฟล์ openssl.exe อยู่ (ถ้าไม่เห็นแสดงว่าโหลด Apache มาผิดไฟล์แล้ว ไปโหลดใหม่ซะ)

จากนั้นให้เราใช้ command ของ windows เปิดไฟล์นี้ดังรูป



จากนั้นให้สร้างคีย์ด้วยคำสั่งแบบนี้

genrsa -des3 -out server.key 1024


ตัวโปรแกรมจะให้กำหนดคีย์รหัสผ่านสองครั้ง แล้วมันจะสร้าง ไฟล์ key มาให้เรา (server.key) อยู่ที่โฟล์เดอร์ bin ของ apache

จากนั้นก็ให้นำไฟล์คีย์ตะกี้ มาสร้างไฟล์ CSR ด้วยคำสั่งด้านล่างนี้

req -config  openssl.cnf -new -x509 -days 365 -key server.key -out server.crt


มันจะให้เรากรอกรหัสผ่านที่เราตั้งไว้ และรายละเอียดต่างๆ สำหรับการสร้างใบรับรองนี้ ผมก็กรอกไปมั่วๆ แต่ก็ต้องจำด้วยว่าเรากรอกอะไรไป แล้วเราจะได้ไฟล์มาอีกไฟล์ (server.crt) อยู่ที่โฟล์เดอร์ bin ของ apache เดิม

จากนั้นให้สร้างโฟล์เดอร์ใหม่ สำหรับจัดเก็บไฟล์พวกนี้ สร้างใน conf ของ apache ก็ได้ ง่ายดี ชื่อ ssl เมื่อสร้างแล้ว ให้ย้ายไฟล์ที่สร้างเมื่อกี้ไปในโฟล์เดอร์นั้น


3. Config Apache

ขั้นตอนนี้ไม่มีอะไรมา ให้เราเข้าไปแก้ไขไฟล์ httpd.conf ด้วยการสั่งให้มันไปเรียกไฟล์ config พื้นฐานของ ssl มาใช้งานก่อน แบบนี้

Include conf/extra/httpd-ssl.conf


(คือแค่เอา # ออกนั่นล่ะ)

จากนั้นเข้าไปแก้ไขไฟล์ httpd-ssl.conf ที่ว่าซักนิด ... ด้วยการลบส่วนที่เป็น VirtualHost ทิ้งไปซะ เพราะรู้สึกว่า ไฟล์คีย์ที่เราสร้างขึ้นมา จะใช้ได้กับ ServerName ที่มีชื่อตรงกันเท่านั้น ดังนั้น config ที่มันให้มาเป็นตัวอย่าง จะทำให้เรา start apache ไม่ได้

ต่อมาให้ไปแก้ไขไฟล์ config ของ vhost ที่เราจะใช้งานจริง โดยเพิ่มข้อมูลลงไปดังนี้

SSLEngine on 
SSLCertificateFile conf/ssl/server.crt 
SSLCertificateKeyFile conf/ssl/server.key


จากนั้นทดลอง restart ดู


4. สรุปว่าพังว่ะ start apache ไม่ขึ้นจริงๆ ด้วย

บ๊ะ! ทีซื้อหวยล่ะไม่ถูก

หลังจากไปงมข้อมูลมานาน พบว่า ถ้าบน linux อีขั้นตอนการ start apache เมื่อติดตั้ง ssl เสร็จแล้วมันจะถาม รหัสผ่านที่เรากรอกไปด้วย แต่ ทว่า ไหงบน windows ไม่ยักถาม ... เลยเข้าไปดูใน log error ของ apache โดนมันด่ามาแบบนี้

[error] Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file C:/Program Files (x86)/Apache ...


งมอยู่นานว่ามันเป็นส้นตีนอะไร ก็ยังไม่เจอ แต่ดันไปเจอวิธีแก้ ให้แก้ไขโดยการเข้าไป config ไฟล์ httpd-ssl.conf อีกครั้ง โดยการไป # หน้าตัวแปล SSLPassPhraseDialog ซะแบบนี้

#SSLPassPhraseDialog  builtin


แต่ว่ายังไม่จบแค่นั้น เราต้องสร้างไฟล์ key ใหม่อีกรอบ

ให้เอาไฟล์ที่เราเพิ่งย้ายไปตะกี้นี้ กลับมาไว้ที่ bin เหมือนเดิม แล้วเปลี่ยนชื่อไฟล์เป็นอย่างอื่น ณ ที่นี้จะเปลี่ยนจากไฟล์ server.key ให้เป็น server.key.org แล้วกัน

จากนั้นให้รัน openssl อีกครั้ง พร้อมคีย์ คำสั่งดังนี้

rsa -in server.key.org -out server.key


แล้วมันจะให้เรากรอกรหัสผ่านที่เราตั้งไว้ตอนนู้นนน ลงไป เมื่อเรียบร้อยแล้ว เราจะได้ไฟล์ key ไฟล์ใหม่มาชื่อ server.key (อีกแล้ว) ... ให้นำกลับไปวางที่เดิม

จากนั้นอีกที ก็ลอง start apache ใหม่ ...


5. สำหรับจากที่ผมทดลอง มันทำงานได้แล้ว ก๊ากๆๆๆ

จบ ...


6. ขอบขอบคุณที่มาที่ไป
avatar
Synchronize ใครกันล่ะหว่า ?

ไม่สามารถแสดงความคิดเห็นได้ จำเป็นต้อง เข้าระบบสมาชิก ก่อน หรือ สมัครสมาชิกใหม่

ขับเคลื่อนโดย un-no Engine 2.2.0 © ลิขสิทธ์โดย บริษัท อันโน คอร์ปอเรชั่น จำกัด [ แผนที่เว็บไซต์ ]

แก้ไขล่าสุด: 2011-10-12 18:22:02, หมายเลขเซสชั่น: cf3a2tnfe1k0gp6be6mi9mjjf5, ใช้เวลาสร้าง: 0.019213915 วินาที (force)