ฉันเพิ่งได้รับอีเมลจาก LetsEncrypt แจ้งว่าใบรับรองเว็บไซต์ของฉันกำลังจะหมดอายุ ฉันกำหนดค่าเว็บไซต์ให้ใช้ HTTPS เท่านั้น ใบรับรองต่ออายุอัตโนมัติโดยไม่มีปัญหาใดๆ จนถึงปัจจุบัน ฉันอัปเกรดไลบรารี OpenSSL บน Ubuntu 18.04 เพื่อใช้ TLS เวอร์ชันล่าสุด 1.3 ทุกอย่างดูเหมือนจะทำงานได้ดี แต่การเข้าถึงเว็บไซต์ของฉันโดยใช้เว็บเบราว์เซอร์ Firefox ที่ทำงานบน Windows 7 แสดงข้อความต่อไปนี้:-
SSL_ERROR_RX_RECORD_TOO_LONG
และไฟล์ "access.log" ของ Apache บนเซิร์ฟเวอร์มีสิ่งต่อไปนี้เมื่อเข้าถึงไซต์:-
"\x16\x03\x01\x02" 400 499 "-" "-"
ซึ่งดูเหมือนการจับมือ TLS และ 400 อาจเป็นคำขอที่ไม่ดี
มีบางอย่างที่ไม่ได้กำหนดค่าอย่างถูกต้อง ฉันจะทราบได้อย่างไรว่าปัญหาคืออะไร
แก้ไข
หลังจากค้นหาวิธีแก้ปัญหา ฉันพบว่าถ้าฉันพิมพ์:-
dfsoftware.ddns.net
ในแถบที่อยู่เบราว์เซอร์ของฉัน ฉันได้รับข้อผิดพลาด (บน Firefox, SSL_ERROR...) แต่ถ้าฉันพิมพ์:-
http://dfsoftware.ddns.net:443
โหลดหน้าได้อย่างถูกต้อง ดูเหมือนว่า apache จะมีปัญหากับการจัดการการเชื่อมต่อที่ปลอดภัยบนพอร์ต 443 และยอมรับเฉพาะคำขอวานิลลาบนพอร์ตนั้น ไฟล์การกำหนดค่าดูดี (ฉันสามารถอัปโหลดได้หากคุณต้องการดู) แล้วเกิดอะไรขึ้น
แก้ไข 2
นี่คือไฟล์คอนฟิกูเรชัน apache ที่ฉันคิดว่าเกี่ยวข้อง หากจำเป็น โปรดถาม
apache2.conf:-
ชื่อเซิร์ฟเวอร์ dfsoftware.ddns.net
DefaultRuntimeDir ${APACHE_RUN_DIR}
ไฟล์พิด ${APACHE_PID_FILE}
หมดเวลา 300
เปิด KeepAlive
MaxKeepAliveRequests 100
KeepAliveTimeout 5
ผู้ใช้ ${APACHE_RUN_USER}
กลุ่ม ${APACHE_RUN_GROUP}
ชื่อโฮสต์ปิดการค้นหา
บันทึกข้อผิดพลาด ${APACHE_LOG_DIR}/error.log
LogLevel เตือน
รวมตัวเลือก mods-enabled/*.load
รวมตัวเลือก mods-enabled/*.conf
รวม ports.conf
<ไดเร็กทอรี />
ตัวเลือก FollowSymLinks
AllowOverride ไม่มี
ต้องการปฏิเสธทั้งหมด
</ไดเร็กทอรี>
<ไดเร็กทอรี /usr/share>
AllowOverride ไม่มี
ต้องได้รับอนุญาตทั้งหมด
</ไดเร็กทอรี>
<ไดเร็กทอรี /var/www/>
ดัชนีตัวเลือก FollowSymLinks
AllowOverride ไม่มี
ต้องได้รับอนุญาตทั้งหมด
</ไดเร็กทอรี>
AccessFileName .htaccess
<FilesMatch "^\.ht">
ต้องการปฏิเสธทั้งหมด
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" รวมกัน
LogFormat "%h %l %u %t \"%r\" %>s %O" ทั่วไป
LogFormat "%{Referer}i -> %U" ผู้อ้างอิง
ตัวแทน LogFormat "%{User-agent}i"
รวมทางเลือก conf-enabled/*.conf
รวมตัวเลือกไซต์ที่เปิดใช้งาน/*.conf
<FilesMatch \.php$>
โปรแกรม SetHandler/x-httpd-php.ini
</FilesMatch>
port.conf:-
ฟัง 80
<IfModule ssl_module>
ฟัง 443
</หากโมดูล>
<IfModule mod_gnutls.c>
ฟัง 443
</หากโมดูล>
มีไซต์/dfsoftare.ddns.net.conf:-
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName dfsoftware.ddns.net
ServerAlias www.dfsoftware.ddns.net
DocumentRoot /WebSites/Websites
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /WebSites/Websites/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =dfsoftware.ddns.net [OR]
RewriteCond %{SERVER_NAME} =www.dfsoftware.ddns.net
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
มีไซต์/dfsoftare.ddns.net-le-ssl.conf:-
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName dfsoftware.ddns.net
ServerAlias www.dfsoftware.ddns.net
DocumentRoot /WebSites/Websites
SSLEngine on
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /WebSites/Websites/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
SSLEngine on
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/dfsoftware.ddns.net- 0001/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/dfsoftware.ddns.net-0001/privkey.pem
</VirtualHost>
</IfModule>