配置apache SSL时出现SSL_ERROR_RX_RECORD_TOO_LONG



我在Debian 11上创建了一个运行Apache 2.4.52的服务器(它随安装而来(,我将该服务器与Wordpress、Nextcloud和Webmin一起用作我的工作组合。

我设置了一个自签名的SSL证书来增加它的安全性,因为我打算在互联网和Nextcloud上向我的客户宣传该网站,但我无法让SSL发挥作用,我在很多地方和很多设置中都找过了,但我不能从内部和外部网络访问它。

浏览器显示以下错误:

Firefox:SSL_ERROR_RX_RECORD_TOO_LONG

Chrome浏览器:ERR_SSL_PROTOCOL_ERROR

我设置了自动将http转发到https,如果我在没有证书的情况下访问链接,它会重定向到安全链接,但它总是会出现这个错误。

我的Apache正在端口3上工作,因为不幸的是,我不能使用默认的80,我不知道这是否与它有关,因为我在一些地方读到它在这种情况下不是很相关(端口在路由器上打开,都是到3到443(。

有人能帮我吗?欣赏

注意:我的网站在没有SSL的情况下正常工作,无论是在局域网还是广域网上,我甚至想过在没有证书的情况下使用它,只有防火墙,但我不知道这对公共网站来说是否安全,我的目标不是获取信息,只是显示内容。

对不起,我是这方面的初学者,谢谢。

遵循我的配置文件:

Apache2.conf

DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off

ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^.ht">
Require all denied
</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"" combined
LogFormat "%h %l %u %t "%r" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
ServerName 127.0.0.1

ports.conf

Listen 3
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>

000 default.conf

<VirtualHost _default_:*>

Redirect "/" "https:// my external ip"
ServerAdmin corsisdesign@gmail.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerName 127.0.0.1
</VirtualHost>

默认ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin corsisdesign@gmail.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile  /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
<FilesMatch ".(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>

ssl params.conf

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
# Disable preloading HSTS for now.  You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
# Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off

我终于可以使用https访问该网站了!我更改了000 default.conf文件。

我将<VirtualHost _default_:*>更改为<VirtualHost _default_:3>,并在默认ssl.conf中输入ssl设置,然后使用证书访问端口3。

现在我正试图找到一种方法来验证自签名证书,这样它就不会显示不安全的消息,但这很困难。我将在这里创建一个新问题,看看是否有其他人知道任何方法!

非常感谢您的提示,它们非常有帮助!!:D

我在尝试修复某个网站的403访问问题后出现了此错误。在我的情况下,我在服务器和本地机器上使用Ubuntu 22.04。Debian可能不同。

在此之前,它使用标准的Apache默认index.html页面一直运行良好。对于证书,我之前从Certbot获得了一个证书,它运行良好,可以很容易地访问https。

当我上传一个真实网站的文件并将其复制到/var/www/html/mysite.com目录时,问题出现了。无论授予网络文件什么权限,它都不会显示。

我删除了mysite.com文件夹,并尝试在可用的apache2/站点中重建所有相关的配置文件。

在此之后,我出现了SSL_ERROR_RX_RECORD_TOO_LONG只有在重新安装现有的Certbot证书后,我才将其删除。

所以现在我也回来了那个讨厌的403访问错误。我通过使/var/www/html/mysite.com归我的用户帐户所有并在具有权限750的www数据组中进行修复。

最新更新