ssl_error_rx_record_too_long และ Apache SSL [ปิด]


242

ฉันมีลูกค้าพยายามเข้าถึงหนึ่งในเว็บไซต์ของฉันและพวกเขายังคงได้รับข้อผิดพลาดนี้> ssl_error_rx_record_too_long

พวกเขาได้รับข้อผิดพลาดนี้ในทุกเบราว์เซอร์ทุกแพลตฟอร์ม ฉันไม่สามารถทำซ้ำปัญหาได้เลย

เซิร์ฟเวอร์ของฉันและตัวฉันอยู่ที่สหรัฐอเมริกาลูกค้าตั้งอยู่ในอินเดีย

ฉันไปที่ปัญหาและแหล่งที่มาหลักดูเหมือนว่าพอร์ต SSL กำลังพูดใน HTTP ฉันตรวจสอบเซิร์ฟเวอร์แล้วและนี่ไม่ได้เกิดขึ้น ฉันลองวิธีแก้ปัญหาที่กล่าวถึงที่นี่แต่ลูกค้าแจ้งว่าไม่ได้แก้ไขปัญหา

มีใครบอกฉันได้บ้างว่าฉันจะแก้ไขปัญหานี้ได้อย่างไรหรือฉันจะทำสิ่งนี้ได้อย่างไร ???

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

ปรากฎว่าลูกค้ามีพร็อกซีในพื้นที่ผิดพลาด!

หวังว่าจะช่วยให้ทุกคนค้นพบคำถามนี้พยายามที่จะแก้ปัญหาในอนาคต


ฉันคิดว่ามันอาจเกิดจากพร็อกซีกำหนดค่าผิดพลาดที่ด้านข้างของสิ่งต่าง ๆ มีความคิดเห็นเกี่ยวกับสิ่งนั้นด้วยหรือไม่?
Subimage

34
เนื่องจากมันถูกปิดเป็นหัวข้อปิด แต่ดูเหมือนจะเป็นคำถามที่มีค่ามาก (อันดับสูงมากใน Google สำหรับข้อความแสดงข้อผิดพลาดนี้) บางทีมันควรจะถูกย้ายไปที่ ServerFault หรือไม่ มันเป็นคำถามที่อายุ 6 ปีดังนั้นบางที SF ก็ไม่สามารถใช้ได้เมื่อคำถามที่ถูกถามครั้งแรก ...
kdmurray

13
นี่เป็นผลการค้นหาเว็บแรกสำหรับ SSL_ERROR_RX_RECORD_TOO_LONG มันมีรายการโปรด 32 รายการ, 193 upvotes, คำตอบมากมายที่ตอบกลับมามาก ... และมันปิดเป็นหัวข้อปิดตามคนที่รู้ดีกว่าพวกเราที่เหลือที่คำถามนี้ไม่มีสิทธิ์ที่จะมีอยู่
Vladimir Kornea

2
ฉันสามารถดีบักปัญหาใบรับรองของฉันที่สร้างข้อความนี้ด้วยopenssl s_client -connect my-domain.tld:443
azmeuk

2
@Subimage "การแก้ปัญหากลับกลายเป็นว่าลูกค้ามีพร็อกซีในเครื่องที่ไม่ถูกต้อง!" โปรดอธิบายความหมายนี้ คุณอาจเฉพาะเจาะจงมากขึ้น มันน่าผิดหวังที่รู้ว่าคุณมีทางออก แต่คุณไม่ได้แก้ปัญหาอย่างชัดเจน
ptrcao

คำตอบ:


169

ลิงค์กล่าวโดยภาพรองเป็นสิทธิในเงินสำหรับฉัน แนะนำให้เปลี่ยนแท็กโฮสต์เสมือนคือจาก<VirtualHost myserver.example.com:443>เป็น<VirtualHost _default_:443>

รหัสข้อผิดพลาด: ssl_error_rx_record_too_long

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

ด้านล่างนี้เป็นสิ่งที่เราแนะนำให้ลอง

  • ตรวจสอบให้แน่ใจว่าพอร์ต 443 เปิดและเปิดใช้งานบนเซิร์ฟเวอร์ของคุณ นี่คือพอร์ตมาตรฐานสำหรับการสื่อสาร https

  • หาก SSL ใช้พอร์ตที่ไม่ได้มาตรฐาน FireFox 3 บางครั้งสามารถให้ข้อผิดพลาดนี้ได้ ตรวจสอบให้แน่ใจ SSL ทำงานบนพอร์ต 443

  • หากใช้ Apache2 ตรวจสอบว่าคุณใช้พอร์ต 443 สำหรับ SSL ซึ่งสามารถทำได้โดยการตั้งค่าไฟล์ ports.conf ดังนี้

    Listen 80
    Listen 443 https
    
  • ตรวจสอบให้แน่ใจว่าคุณไม่มีใบรับรอง SSL มากกว่าหนึ่งรายการที่ใช้ IP เดียวกัน โปรดตรวจสอบว่าใบรับรอง SSL ทั้งหมดใช้ IP เฉพาะของตนเอง

  • หากใช้ Apache2 ให้ตรวจสอบการกำหนดค่า vhost ของคุณ ผู้ใช้บางคนรายงานว่ามีการเปลี่ยนแปลง<VirtualHost>เพื่อ_default_แก้ไขข้อผิดพลาด

ที่แก้ไขปัญหาของฉัน มันหายากที่ฉัน google ข้อความข้อผิดพลาดและได้รับความนิยมครั้งแรกกับคำตอบที่ถูกต้อง! :-)

นอกเหนือจากข้างต้นเหล่านี้คือวิธีการแก้ปัญหาอื่น ๆ ที่คนอื่น ๆ พบได้ก่อให้เกิดปัญหา:

  • ตรวจสอบให้แน่ใจว่าใบรับรอง SSL ของคุณยังไม่หมดอายุ

  • ลองระบุรหัสลับ:

    SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM:+SSLv3


5
เพียงเพิ่มรายการสิ่งที่ต้องตรวจสอบหลังจากตรวจสอบรายการทั้งหมดเหล่านี้ฉันต้องสลับ < ค่าเริ่มต้นของ VirtualHost : 443> เป็น <VirtualHost fqdn: 443> เพื่อให้ใช้งานได้ในที่สุด
JimP

2
ฉันมีปัญหานี้ในเซิร์ฟเวอร์ whm / Cpanel ฉันเพิ่งติดตั้ง ssl ใหม่เพื่อแก้ไขปัญหา
Mike D

15
_default_:443ทำงานให้ฉัน ไม่ฉันนอนไม่หลับ!
Garfonzo

คุณอาจมี SSL เป็นค่าเริ่มต้น แต่ถ้าคุณมี virthost ใหม่กับปัญหานี้คุณอาจไม่ได้กำหนดค่า SSL ไว้แม้ว่าจะเปิดพอร์ตก็ตาม (aka, อุ๊ปส์ฉันพลาดขั้นตอน)
ห์

1
ตรวจสอบและทำให้แน่ใจว่าคุณไม่มีไฟล์อื่น ๆ ของ VirtualHost ที่คอยรับฟังพอร์ต 443 ด้วยการตั้งค่าที่ไม่เหมาะสม หนึ่งไฟล์ conf ที่ไม่ดีสามารถทำให้ไซต์ SSL ทั้งหมดล่ม
Nostalg.io

120

วิธีแก้ปัญหาสำหรับฉันคือdefault-sslไม่ได้เปิดใช้งานใน apache 2 .... เพิ่งวางSSLEngine On

ฉันต้องทำงานa2ensite default-sslและทุกอย่างทำงานได้


4
ฉันใช้a2enmod sslแต่ลืมไปa2ensite default-sslจากค่าเริ่มต้น vhost conf ขอบคุณ!
m3nda

พวกเขาควรdefault-sslเปิดใช้งานจริงใน Ubuntu แล้ว
BadHorsie

32

ในกรณีของฉันฉันต้องเปลี่ยน <VirtualHost *> กลับเป็น <VirtualHost *: 80> (ซึ่งเป็นค่าเริ่มต้นบน Ubuntu) มิฉะนั้นพอร์ต 443 ไม่ได้ใช้ SSL และกำลังส่ง HTML ธรรมดากลับไปที่เบราว์เซอร์

คุณสามารถตรวจสอบว่าเป็นกรณีนี้คุณค่อนข้างง่าย: เพียงแค่เชื่อมต่อกับเซิร์ฟเวอร์ของคุณhttp://www.example.com:443 หากคุณเห็น HTML ธรรมดา Apache ของคุณไม่ได้ใช้ SSL บนพอร์ต 443 เลยอาจเกิดจากการกำหนดค่า VirtualHost ผิดพลาด

ไชโย!


1
localhost: 443โหลด html ของ plian ทำอย่างไร
นิรัน

@ นิรันดร์ฉันคิดว่ามันขึ้นอยู่กับค่าเริ่มต้นของระบบปฏิบัติการของคุณสำหรับ<VirtualHost>คำสั่ง ลองค้นหาค่าเริ่มต้นและปรับเปลี่ยนให้เหมาะสมและตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน SSL บน VirtualHost นั้น
alexm

1
พบปัญหานี้กับ vhost เนื่องจาก 000-default.conf มีส่วนที่ไม่ได้ใช้: 443 โดยไม่มี SSLEngine บันทึก Apache แสดงสิ่งนี้ซึ่งพาฉันไปในทางที่ถูกต้อง:AH01916: Init: (myhost.example.com:443) You configured HTTP(80) on the standard HTTPS(443) port!
mivk

ปัญหาของฉันคือฉันไม่ได้เรียกใช้ "sudo a2ensite default-ssl.conf" ssl conf ไม่ได้อยู่ในไดเรกทอรีที่เปิดใช้งานไซต์เท่านั้นมีเฉพาะในไซต์
Json


10

หากคุณมีข้อผิดพลาดหลังจากตั้งค่า https vhost ใหม่และดูเหมือนว่าการตั้งค่าจะถูกต้องอย่าลืมลิงค์sites-enabledด้วย


2
ฟังดูงี่เง่า แต่มันจับฉันได้
Alexei Tenitski

2
ใช้ a2ensite แทนการเชื่อมโยงนี่เป็นวิธีที่ถูกต้องในระบบส่วนใหญ่
AsTeR

1
ตรวจสอบกฎที่ apache2.conf (Ubuntu): IncludeOptional sites-enabled / *. conf ต้องแน่ใจว่าลิงก์ของคุณลงท้ายด้วย ".conf" หรือเปลี่ยนกฎเพื่อรวมไฟล์ทั้งหมด
lepe

1
ฉันสร้างการกำหนดค่าไซต์ด้วยไวยากรณ์ที่ถูกต้องและเชื่อมโยงกับเว็บไซต์ที่มีอยู่ ปัญหาคือ: ชื่อของการกำหนดค่าของฉันไม่ได้ลงท้ายด้วย ".conf" เช่นนี้มันไม่เคยโหลดและฉันได้รับข้อผิดพลาดดังกล่าวข้างต้น Configs ในกรณีของฉันถูกโหลดด้วยคำสั่ง "IncludeOptional sites-enabled / *. conf" ดังนั้นการกำหนดค่าจึงต้องมีชื่อ <Whething> .conf เล็กน้อย แต่ไม่ก่อให้เกิดข้อผิดพลาดทางไวยากรณ์ใด ๆ (ไม่เคยโหลดหลังจากทั้งหมด) และน่ารำคาญเพราะ ls แสดงให้เห็นในเว็บไซต์ที่มีอยู่ ...
roland.minner

7

คำถามเก่า แต่ส่งผลให้ Google เป็นอันดับแรกดังนั้นนี่คือสิ่งที่ฉันต้องทำ

Ubuntu 12.04 Desktop พร้อมติดตั้ง Apache

การกำหนดค่าและ mod_ssl ทั้งหมดถูกติดตั้งเมื่อฉันติดตั้ง Apache แต่มันก็ยังไม่ได้ลิงก์ในจุดที่ถูกต้อง หมายเหตุ: เส้นทางทั้งหมดด้านล่างสัมพันธ์กับ/ etc / apache2 /

mod_sslถูกเก็บไว้ใน./mods-availableและการกำหนดค่าไซต์ SSL นั้น./sites-availableคุณเพียงต้องเชื่อมโยงสิ่งเหล่านี้กับสถานที่ที่ถูกต้องใน./mods-enabledและ./sites-enabled

cd /etc/apache2
cd ./mods-enabled
sudo ln -s ../mods-available/ssl.* ./
cd ../sites-enabled
sudo ln -s ../sites-available/default-ssl ./

รีสตาร์ท Apache และควรใช้งานได้ ฉันพยายามเข้าถึงhttps: // localhostดังนั้นผลลัพธ์ของคุณอาจแตกต่างกันไปสำหรับการเข้าถึงจากภายนอก แต่สิ่งนี้ใช้ได้สำหรับฉัน


9
คำสั่ง 'a2ensite default-ssl' และ 'a2enmodule ssl' ทำให้การจัดการโมดูลและไซต์ symlink ทำได้ง่ายขึ้น
โจไซยา

4

ถามผู้ใช้ถึง URL ที่ถูกต้องที่พวกเขาใช้ในเบราว์เซอร์ หากพวกเขาป้อนhttps://your.site:80พวกเขาอาจได้รับข้อผิดพลาด ssl_error_rx_record_too_long


ฉันเห็นภาพหน้าจอและไม่ใช่: 80 ลองด้วยตัวคุณเอง: monkeyfood.cashboardapp.com
Subimage

4

ในกรณีของฉันฉันมีที่อยู่ IP ผิดในไฟล์โฮสต์เสมือน Listen คือ 443 และ stanza เป็น<VirtualHost 192.168.0.1:443>แต่เซิร์ฟเวอร์ไม่มีที่อยู่ 192.168.0.1!


ฉันสามารถยืนยันได้ว่านี่เป็นปัญหาสำหรับฉันด้วย ... ที่อยู่ IP ผิด
StanleyD

3

โปรดดูลิงค์นี้

ฉันดูในไฟล์บันทึก apache ทั้งหมดจนกว่าฉันจะพบข้อผิดพลาดจริง (ฉันเปลี่ยน<VirtualHost>จาก_default_เป็นของฉันfqdn) เมื่อฉันแก้ไขข้อผิดพลาดนี้ทุกอย่างทำงานได้ดี


2

ในกรณีของฉันปัญหาคือว่า https ไม่สามารถเริ่มต้นได้อย่างถูกต้องเนื่องจาก Listen 443 อยู่ใน "IfDefine SSL" ที่ได้รับมา แต่ apache ของฉันไม่ได้เริ่มต้นด้วยตัวเลือก -DSSL การแก้ไขคือการเปลี่ยนสคริปต์ apachectl ของฉันใน:

$HTTPD -k $ARGV

ถึง:

$HTTPD -k $ARGV -DSSL

หวังว่าจะช่วยใครซักคน


1

ปัญหาของฉันเกิดจาก LOW MTU ผ่านการเชื่อมต่อ VPN

netsh interface ipv4 show inter

Idx  Met   MTU   State        Name
---  ---  -----  -----------  -------------------
  1 4275 4294967295  connected    Loopback Pseudo-Interface 1
 10 4250   **1300**  connected    Wireless Network Connection
 31   25   1400  connected    Remote Access to XYZ Network

แก้ไข: อินเตอร์เฟซ netsh ipv4 ตั้งค่าอินเตอร์เฟซ "การเชื่อมต่อเครือข่ายไร้สาย" mtu = 1400

มันอาจเป็นปัญหาในการเชื่อมต่อที่ไม่ใช่ VPN ด้วย ...


1

ฉันมีการกำหนดค่าโฮสต์เสมือนสับสน จำไว้ว่าคุณต้องมีโฮสต์เสมือนหนึ่งตัวที่ไม่มี SSL สำหรับพอร์ต 80 และอีกอันที่มี SSL สำหรับพอร์ต 443 คุณไม่สามารถมีได้ทั้งในโฮสต์เสมือนหนึ่งเนื่องจากการกำหนดค่าที่สร้างโดย webmin พยายามทำ


0

ฉันมีปัญหาเดียวกันในบางเบราว์เซอร์เพื่อเข้าถึงไซต์ SSL ของฉัน ฉันพบว่าฉันต้องมอบ fireFox ให้กับ proxy ที่ถูกต้อง (FireFox กำลังเข้าถึงอินเทอร์เน็ตโดยตรง)

ขึ้นอยู่กับการกำหนดค่า LAN (การกรองการกรองการเปลี่ยนเส้นทางพร็อกซี) โหมด "การเข้าถึงอินเทอร์เน็ตโดยตรง" สำหรับ FireFox จะพ่นข้อผิดพลาดนี้


พร็อกซีบางตัวส่งคืนการตอบกลับข้อผิดพลาด HTTP ต่อคำขอ HTTPS ซึ่งไม่ได้คาดหวัง (เช่นหากคุณผ่านพร็อกซีผิดหรือมิฉะนั้นได้กำหนดค่าพร็อกซีผิด) นี่อาจเป็นเรื่องยากที่จะวินิจฉัยเพราะเบราว์เซอร์จะปฏิเสธการสนทนาทั้งหมดและทำให้เกิดข้อผิดพลาดแทนที่จะแสดงข้อความข้อผิดพลาดของพร็อกซี Wireshark ทำงานแม้ว่า เพิ่งวิ่งเข้าไปในนี้ด้วยตัวเอง
การแข่งขัน Lightness ใน Orbit

0

คุณอาจลองแก้ไขไฟล์ hosts

เก็บไฟล์ vhost ด้วยโดเมนแบบเต็มและเพิ่มชื่อโฮสต์ในไฟล์โฮสต์/ etc / hosts (debian)

ip.ip.ip.ip name name.domain.com

หลังจากรีสตาร์ท apache2 ข้อผิดพลาดควรหายไป


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.