การกำหนดค่า Apache ด้วย SSL

คำแนะนำต่อไปนี้ถือว่าคุณต้องการเรียกใช้ทั้งเซิร์ฟเวอร์ที่ปลอดภัย (บนพอร์ต 443) และเซิร์ฟเวอร์ปกติ (บนพอร์ต 80). ขั้นแรกคุณต้องกำหนดค่าเซิร์ฟเวอร์เพื่อรับฟังทั้งสองพอร์ต แก้ไขอย่างใดอย่างหนึ่ง /etc/apache2/ports.conf (ใน Debian สิ่งนี้รวมอยู่ใน apache2.conf) หรือแก้ไข /etc/apache2/apache2.conf โดยตรงเพื่อรวมสาย:

ฟัง 80 ฟัง 443

ถัดไปแก้ไข /etc/apache2/sites-enabled/yoursite เพื่อใช้การตั้งค่า SSL การแยกการตั้งค่าเซิร์ฟเวอร์ปกติและปลอดภัยออกโดยใช้ VirtualHosts เป็นตัวเลือกที่ง่ายที่สุดในแง่ของการบำรุงรักษา การกำหนดค่าใด ๆ นอกส่วนของ VirtualHosts (เช่นการตั้งค่า ServerAdmin) จะใช้กับทั้ง VirtualHosts (และอื่น ๆ )

หมายเหตุ เริ่มต้นด้วย Apache 2.4.8 การฝึกเก็บใบรับรองเซิร์ฟเวอร์และเชนใบรับรองระดับกลางในไฟล์แยกต่างหากถูกคัดค้าน ทั้งวิธีปัจจุบันและวิธีดั้งเดิมมีรายละเอียดในแท็บที่คลิกได้ด้านล่าง
Apache 2.4.8 หรือสูงกว่าApache 2.4.7 หรือต่ำกว่า

รุ่นของ Apache 2.4.8 และสูงกว่าคาดว่าใบรับรองเซิร์ฟเวอร์ของคุณจะถูกต่อกับใบรับรองกลางใด ๆ ในไฟล์เดียว หากต้องการดาวน์โหลดไฟล์ที่ถูกโยงจาก SSL.com ให้เลือก Nginx ลิงค์ดาวน์โหลดในบัญชีพอร์ทัลของคุณ:

Nginx

อีกทางหนึ่งคุณสามารถเชื่อมต่อใบรับรองที่มีอยู่ของคุณและไฟล์กลางด้วยคำสั่งดังนี้:

$ cat /etc/ssl/private/ca-bundle-client.crt >> /etc/ssl/private/yourdomain.crt

เพิ่มส่วนต่อไปนี้ในไฟล์ปรับแต่งของคุณ:

# ================================================= # SSL /TLS การตั้งค่า # ================================================ = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine บน SSLCertificateFile /etc/ssl/private/yourdomain.chained.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key

หมายเหตุเล็กน้อยเกี่ยวกับการกำหนดค่านี้:

  • SSLEngine ต้องเปิดใช้งานเพื่อให้เซิร์ฟเวอร์ใช้ SSL
  • DocumentRoot ตั้งค่าไดเรกทอรีรากสำหรับโฮสต์เสมือนนี้ ซึ่งหมายความว่าคุณสามารถแยกเนื้อหาที่ปลอดภัยทั้งหมดออกจากเนื้อหาปกติ
  • SSLCertificateFile ควรตั้งค่าเป็นตำแหน่งที่คุณวางไฟล์พร้อมใบรับรองเซิร์ฟเวอร์และเชนระดับกลาง
  • SSLCertificateKeyFile ควรตั้งค่าเป็นตำแหน่งที่คุณวางไฟล์กุญแจส่วนตัวของคุณ

เพิ่มส่วนต่อไปนี้ในไฟล์ปรับแต่งของคุณ:

# ================================================= # SSL /TLS การตั้งค่า # ================================================ = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine บน SSLCertificateFile /etc/ssl/private/yourdomain.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key SSLCertificateChainFile / etc / ssl / private / ca-bundle- client.crt

หมายเหตุเล็กน้อยเกี่ยวกับการกำหนดค่านี้:

  • SSLEngine ต้องเปิดใช้งานเพื่อให้เซิร์ฟเวอร์ใช้ SSL
  • DocumentRoot ตั้งค่าไดเรกทอรีรากสำหรับโฮสต์เสมือนนี้ ซึ่งหมายความว่าคุณสามารถแยกเนื้อหาที่ปลอดภัยทั้งหมดออกจากเนื้อหาปกติ
  • SSLCertificateFile, SSLCertificateChainFile, และ SSLCertificateKeyFile ควรตั้งค่าเป็นตำแหน่งที่คุณวางใบรับรองไฟล์คีย์กลางและส่วนตัวตามลำดับ

ในการรันเซิร์ฟเวอร์ปกติบนพอร์ต 80 ให้เพิ่มส่วนต่อไปนี้ในไฟล์ปรับแต่ง:

NameVirtualHost *: 80 DocumentRoot "/ var / www / yoursite" # การตั้งค่าไดเรกทอรีเฉพาะโฮสต์ตัวเลือก ฯลฯ # ตัวเลือกเหล่านี้ส่วนใหญ่มีแนวโน้มที่จะตั้งอยู่นอกส่วน VirtualHosts #

หลังจากที่คุณบันทึกไฟล์การกำหนดค่าที่แก้ไขแล้วให้รีสตาร์ทเว็บเซิร์ฟเวอร์ หากคุณใช้ข้อความรหัสผ่านในการสร้างใบรับรองคุณจะต้องป้อนเมื่อถูกท้าทาย

การทดสอบ

สร้างเพจ index.html พื้นฐานทุกที่ที่มีไดเร็กทอรีรูทสำหรับเว็บเซิร์ฟเวอร์ของคุณหากคุณยังไม่มีเนื้อหาที่นั่น

จากนั้นชี้เว็บเบราว์เซอร์ของคุณที่ https://www.yoursite.com. คุณควรเห็นการเชื่อมต่อ SSL เปิดขึ้นและส่งเพจแล้ว หากคุณใช้ใบรับรองที่ลงนามด้วยตนเองเบราว์เซอร์ของคุณจะแสดงข้อความแจ้งเตือนว่าไม่สามารถยืนยันตัวตนของเซิร์ฟเวอร์ คุณสามารถเลือกดูและยอมรับใบรับรองได้ หากใช้ใบรับรองภายนอกทุกอย่างควรเกิดขึ้นโดยไม่มีการแทรกแซง

ตรวจสอบให้แน่ใจด้วยว่าคุณไม่สามารถเข้าถึงเนื้อหาที่มีการป้องกันโดยใช้ http: // หากคุณลองคุณควรได้รับข้อความแสดงข้อผิดพลาด

การแก้ไขปัญหา

หากไม่ทำงานตามที่คาดไว้ก่อนอื่นให้ตรวจสอบว่าเซิร์ฟเวอร์ของคุณกำลังทำงานอยู่โดยใช้ ps -a | grep apache. หากไม่ได้สิ่งใดกลับมาให้ลองรีสตาร์ทและตรวจสอบข้อความแสดงข้อผิดพลาดบนเทอร์มินัล

ตรวจสอบด้วยว่าการอนุญาตในคีย์และไฟล์ใบรับรองของคุณนั้นตั้งค่าไว้ถูกต้อง (ดูด้านบน) รวมถึงการอนุญาตในไฟล์ HTML ทดสอบและไดเรกทอรีหลัก

จากนั้นตรวจสอบบันทึก คุณควรตรวจสอบทั้งบันทึกเซิร์ฟเวอร์หลักและบันทึก SSL ที่คุณตั้งค่าไว้ในไฟล์กำหนดค่าด้านบน หากคุณไม่ได้รับประโยชน์ใด ๆ ให้ลองเปลี่ยนค่า LogLevel ในไฟล์ config Apache2 เป็น“ debug” รีสตาร์ท Apache2 แล้วทดสอบอีกครั้ง สิ่งนี้ควรให้ข้อมูลล็อกไฟล์มากขึ้น

หากคุณใช้งานเว็บเซิร์ฟเวอร์ปกติบนพอร์ต 80 เช่นกันให้ลองดึงหน้าทดสอบผ่าน http: // แทนที่จะเป็น https: // เพื่อช่วยระบุว่าปัญหาเกิดจากเว็บเซิร์ฟเวอร์หรือด้วยการเชื่อมต่อ SSL โปรดทราบว่าในการตั้งค่าด้านบนไดเรกทอรีรากของเว็บเซิร์ฟเวอร์จะแตกต่างกันสำหรับ http: // และ https: // ดังนั้นคุณจะไม่ (หรือไม่ควร!) เข้าถึงเนื้อหาเดียวกันได้ หากหน้าทดสอบของคุณในไดเรกทอรีราก http: // ทำงานได้ดีและหน้าทดสอบของคุณในไดเรกทอรีราก https: // ไม่ทำงานนั่นจะช่วยให้คุณระบุปัญหาได้

หากปัญหาคือการเชื่อมต่อ SSL เครื่องมือที่มีประโยชน์คือ s_clientซึ่งเป็นเครื่องมือวินิจฉัยสำหรับการแก้ไขปัญหา TLS/ การเชื่อมต่อ SSL การใช้งานพื้นฐานคือ: /usr/bin/openssl s_client -connect localhost:443. มีตัวเลือกอื่น ๆ อีกมากมายเช่นกันซึ่งคุณสามารถตรวจสอบเอกสารได้ หากคุณได้รับข้อความแสดงข้อผิดพลาดสิ่งนี้จะช่วยคุณในการค้นหาปัญหา

ขอบคุณที่เลือกใช้ SSL.com! หากคุณมีคำถามใด ๆ โปรดติดต่อเราทางอีเมลที่ Support@SSL.com, โทร 1-877-SSL-SECUREหรือเพียงคลิกลิงก์แชทที่ด้านล่างขวาของหน้านี้

สมัครรับจดหมายข่าวของ SSL.com

อย่าพลาดบทความและการปรับปรุงใหม่จาก SSL.com

รับทราบข้อมูลและปลอดภัย

SSL.com เป็นผู้นำระดับโลกในด้านความปลอดภัยทางไซเบอร์ PKI และใบรับรองดิจิทัล ลงทะเบียนเพื่อรับข่าวสารอุตสาหกรรม เคล็ดลับ และประกาศผลิตภัณฑ์ล่าสุดจาก SSL.com.

เราชอบความคิดเห็นของคุณ

ทำแบบสำรวจของเราและแจ้งให้เราทราบความคิดเห็นของคุณเกี่ยวกับการซื้อครั้งล่าสุดของคุณ