Tôi có máy chủ của riêng mình (nơi tôi đang chạy Apache/2.4.27
) và hôm nay tôi nhận ra rằng từ (Brave và Google Chrome - các máy tính khác nhau) tôi nhận được từ trang web của mình lỗi này;
This site can’t provide a secure connection
mywebsite.com sent an invalid response.
ERR_SSL_PROTOCOL_ERROR
Và điều kỳ lạ là tôi nhận được lỗi này cứ sau 5 lần nhấp vào trang web của tôi.
Từ tập tin conf của tôi:
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/mywebsite/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mywebsite/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/mywebsite/chain.pem
SSLCompression off
từ options-ssl-apache.conf
;
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLHonorCipherOrder on
SSLCompression off
Tôi đã kiểm tra tệp nhật ký từ trang web nhưng không có gì, cũng không có gì ở đây; /var/log/apache2/error.log
Tôi đang cố gắng tìm ra nguyên nhân gây ra lỗi này, bất kỳ ý tưởng nào tôi có thể tìm thêm thông tin hoặc thậm chí tốt hơn, làm thế nào để giải quyết vấn đề này?
BIÊN TẬP:
Nếu tôi thử openssl s_client -connect mywebsite.com:443
, nó sẽ trở lại:
Tôi đang sử dụng: OpenSSL 1.1.0f
CONNECTED(00000003)
...
3073276480:error:1408F119:SSL routines:ssl3_get_record:decryption failed or bad record mac:../ssl/record/ssl3_record.c:469:
KHÁC EDIT:
Như @quadruplebucky đề xuất, tôi đã thay đổi tùy chọn-ssl-apache.conf thành:
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SSLv3:!SSLv2:!TLSv1
SSLHonorCipherOrder on
SSLCompression off
#SSLSessionTickets off
Tôi cũng đã cố gắng thêm SSLProtocol all -SSLv2 -SSLv3
vào tập tin conf Virtualhost của mình và trong cùng một lúc tôi đã thay đổi một vài thứ ở đây;/etc/apache2/mods-available/ssl.conf
#SSLCipherSuite HIGH:!aNULL
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SSLv3:!SSLv2:!TLSv1
SSLHonorCipherOrder on
# The protocols to enable.
# Available values: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2
# SSL v2 is no longer supported
SSLProtocol all -SSLv2 -SSLv3
BIÊN TẬP:
Sau khi thay đổi LogLevel thành Info
nó trả về:
[Sat Jul 08 13:34:53.374307 2017] [ssl:info] [pid 8710] [client] AH02008: SSL library error 1 in handshake (server mywebsite:443)
[Sat Jul 08 13:34:53.374717 2017] [ssl:info] [pid 8710] SSL Library Error: error:140940F4:SSL routines:ssl3_read_bytes:unexpected message
[Sat Jul 08 13:34:53.374750 2017] [ssl:info] [pid 8710] [client] AH01998: Connection closed to child 1 with abortive shutdown (server mywebsite:443)
BIÊN TẬP:
Nếu tôi chạy với tùy chọn -crlf, như thế này:
openssl s_client -crlf -connect mywebsite:443
Tôi không nhận được lỗi?
Một điều nữa nếu tôi thay đổi LogLevel thành gỡ lỗi, trước lỗi đó tôi nhận được điều này:
[Tue Jul 11 23:00:38.641568 2017] [core:debug] [pid 26561] protocol.c(1273): [client 188.64.25.162:23165] AH00566: request failed: malformed request line
[Tue Jul 11 23:00:38.641634 2017] [headers:debug] [pid 26561] mod_headers.c(900): AH01503: headers: ap_headers_error_filter()
Vì vậy, sau đó, lỗi tương tự sẽ xảy ra:
SSL Library Error: error:140940F4:SSL routines:ssl3_read_bytes:unexpected message
openssl version
OpenSSL 1.1.0f 25 May 2017
ssl3*
và SSL3*
trong OpenSSL cũng được sử dụng cho TLS (1.0 đến 1.2) vì sự tương đồng kỹ thuật giữa các giao thức đó. user134969: 'chiều dài quá ngắn' cũng không bao giờ được gây ra bởi bất kỳ cấu hình nào. Nếu điều đó có thể lặp lại, vui lòng thử lấy s_client -debug
(với RSA đơn giản -cipher
nếu bạn không làm điều đó trên máy chủ) và chụp hình dây dẫn cho cùng một sự kiện để chúng tôi có thể xem dữ liệu dây thực tế và so sánh với dữ liệu mà chương trình nhìn thấy.