คำเตือนการเลิกใช้ SSLCertificateChainFile บน Apache 2.4.8+


14

เรามีใบรับรอง SSL สำหรับเว็บไซต์ของเราจาก Network Solutions หลังจากอัพเกรด Apache / OpenSSL เป็นเวอร์ชั่น 2.4.9 ฉันได้รับคำเตือนต่อไปนี้เมื่อเริ่มต้น HTTPD:

AH02559: The SSLCertificateChainFile directive (/etc/httpd/conf.d/ssl.conf:105) is deprecated, SSLCertificateFile should be used instead

ตามคู่มือ Apache สำหรับ mod_sslนี่เป็นกรณีจริง:

SSLCertificateChainFile เลิกใช้แล้ว

SSLCertificateChainFile ล้าสมัยกับรุ่น 2.4.8 เมื่อ SSLCertificateFile ถูกขยายเพื่อโหลดใบรับรอง CA ระดับกลางจากไฟล์ใบรับรองเซิร์ฟเวอร์ด้วย

มองขึ้นไปเอกสารสำหรับSSLCertificateFileมันดูเหมือนผมเพียงแค่ต้องการที่จะเปลี่ยนการโทรของฉันไปSSLCertificateChainFileกับSSLCertificateFile

การเปลี่ยนแปลงนี้ทำให้ ssl.conf ของฉันเปลี่ยนจากสิ่งนี้:

SSLCertificateFile /etc/ssl/STAR.EXAMPLE.COM.crt
SSLCertificateKeyFile /etc/ssl/server.key
SSLCertificateChainFile /etc/ssl/Apache_Plesk_Install.txt

สำหรับสิ่งนี้:

SSLCertificateFile /etc/ssl/STAR.EXAMPLE.COM.crt
SSLCertificateFile /etc/ssl/Apache_Plesk_Install.txt
SSLCertificateKeyFile /etc/ssl/server.key

... แต่นี่ใช้ไม่ได้ Apache ไม่ยอมเริ่มโดยไม่มีข้อความแสดงข้อผิดพลาด

ฉันไม่แน่ใจว่าจะลองทำอะไรที่นี่เพราะฉันไม่คุ้นเคยกับใบรับรอง mod_ssl หรือ SSL โดยทั่วไป ฉันจำได้ว่าเราต้องเพิ่มไฟล์Apache_Plesk_Install.txtเพื่อให้ Internet Explorer ไม่มีคำเตือน SSL ในเว็บไซต์ของเรา แต่อย่างอื่นนอกเหนือจากนี้ฉันไม่มีเงื่อนงำ

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก. ขอบคุณ


6
คุณต้องต่อใบรับรองทั้งหมดใบรับรองลูกค้าและใบรับรองระดับกลาง
dawud

คำตอบ:


9

ฉันมีปัญหาเดียวกัน ฉันเพิ่งเปลี่ยนสายเหล่านี้มา/etc/apache2/site-enabled/default-ssl.conf

SSLCertificateFile    /etc/ssl/certs/domain.crt
SSLCertificateKeyFile /etc/ssl/private/domain.key
#SSLCertificateChainFile /etc/apache2/ssl.crt/chain.crt

SSLCertificateChainFileในขณะที่คุณเห็นฉันเป็นเพียงแค่แสดงความคิดเห็นออกมา จากนั้นเห็นข้อผิดพลาดเช่นเดียวกับคุณผมตัดแบ่งเนื้อหาของฉันchain.crt ในตอนท้ายของdomain.crtเช่นดังนั้น:

root@host~: cat /etc/apache2/ssl.crt/chain.crt >> /etc/ssl/certs/domain.crt

และมันก็ใช้งานได้เหมือนมีเสน่ห์


ถูกต้องสมบูรณ์ตามความเห็นใน apache config: "หรืออีกทางหนึ่ง # ไฟล์ที่อ้างอิงสามารถเหมือนกับ SSLCertificateFile # เมื่อใบรับรอง CA ต่อท้ายโดยตรงกับใบรับรองเซิร์ฟเวอร์ # เพื่อความสะดวก"
PeanutPower

6

ฉันใช้สคริปต์ต่อไปนี้เพื่อสร้างชุดใบรับรองที่มีใบรับรองแบบโซ่

#!/bin/sh
#
# Convert PEM Certificate to ca-bundle.crt format
#

test ! $1 && printf "Usage: `basename $0` certificate" && exit 1

# Friendly Name and Underline Friendly Name with equal signs
openssl x509 -in $1 -text -noout | sed -e 's/^  *Subject:.*CN=\([^,]*\).*/\1/p;t  c' -e 'd;:c' -e 's/./=/g'
# Output Fingerprint and swap = for :
openssl x509 -in $1 -noout -fingerprint | sed -e 's/=/: /'
# Output PEM Data:
echo 'PEM Data:'
# Output Certificate
openssl x509 -in $1
# Output Certificate text swapping Certificate with Certificate Ingredients
openssl x509 -in $1 -text -noout | sed -e 's/^Certificate:/Certificate Ingredients:/'

หากต้องการใช้ให้เริ่มต้นด้วยใบรับรองเซิร์ฟเวอร์และเรียงลำดับผ่านใบรับรองตัวกลางใด ๆ ในห่วงโซ่ใบรับรองกลับไปที่ใบรับรองรูท

./bundle.sh myserver.crt >myserver.chain
./bundle.sh intermediate.crt >>myserver.chain
./bundle.sh root.crt >>myserver.chain

โดยที่ชื่อใบรับรองที่เหมาะสมจะถูกแทนที่ด้วยชื่อใบรับรองจริงของคุณ


4

มีใบรับรองไซต์ intermediates รวมถึงในไฟล์ที่ระบุโดยคำสั่ง SSLCertificateFile และคีย์ส่วนตัวที่ต่อกันในไฟล์ที่ระบุโดย SSLCertificateKeyFile และคุณควรจะตั้งค่าทั้งหมด แม้ว่าคุณจะมีรหัสส่วนตัวในไฟล์เดียวกับใบรับรอง แต่มันก็ไม่เป็นที่น่าพอใจ โปรดตรวจสอบเอกสารสำหรับรายละเอียดเพิ่มเติม:
http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslcertificatefile
ฉันขอแนะนำว่าใบรับรอง CA หลักไม่ได้เป็นส่วนหนึ่งของ SSLCertificateFile เนื่องจากลูกค้าควรมี ใบรับรอง root CA นั้นเชื่อถือได้เพื่อให้การตรวจสอบความถูกต้องของใบรับรองทำงานได้ตามที่ออกแบบไว้
นอกจากนี้หากไม่มีสิ่งใดในบันทึกข้อผิดพลาดของ apache คุณสามารถใส่บันทึกข้อผิดพลาดให้ละเอียดยิ่งขึ้นได้http://httpd.apache.org/docs/current/mod/core.html#loglevel


1
จริงๆ? กุญแจส่วนตัว? ดูเหมือนว่าเป็นความคิดที่ไม่ดี แค่สงสัยเพราะข้อสันนิษฐานที่แข็งแกร่งของฉันคือว่านี่เป็นส่วนตัว
ssl

2
คุณถูกต้อง - สิ่งต่าง ๆ เปลี่ยนไปจากสิ่งที่ฉันจำได้จากเอกสารประกอบและยังมีเอกสารอะไรบ้างในไฟล์ httpd-ssl.conf สำหรับคำสั่งทั้งสองนี้ แม้ว่าได้รับอนุญาต แต่การฝึกการมีไพรเวตคีย์ในไฟล์ที่ระบุโดย SSLCertificateFile นั้นเป็นสิ่งที่ท้อแท้ ขณะนี้มีการแก้ไขคำตอบเพื่อรองรับความจริงนี้
Khanna111
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.