gpt4 book ai didi

linux - 如何在没有证书(Apache VirtualHosts)的情况下将 HTTPS 请求重定向到 HTTP 并避免证书警告

转载 作者:IT王子 更新时间:2023-10-29 00:17:40 26 4
gpt4 key购买 nike

I would first like to first say, this is not good practice and we should endevour to have everything on HTTPS 100% of the time but in this case I had a series of awkward requirements on a system that did not hold sensitive information. I was quite ignorant of how HTTPS/TLS worked when asking this question back when I was more junior but have left it in place to help others as it receives a fair amount of attention. I recommend reading Oreily's TLS 101 if you're interested. You can now get free TLS certificates using Let's Encrypt which I thoroughly recommend. Lastly, if you are using the default Apache config please check out Mozilla's SSL config generator selecting 'Modern' after entering your apache version.

我在一台 Apache 服务器上托管了几个独立的网站:

网站.com

site.com 将所有用户从应用程序内重定向到 HTTPS。

example.com

example.com 是一个 HTTP 网站,HTTPS 请求被重定向到 HTTP


为了应对 https://example.com 的意外请求而不是 http://example.com不获取 site.com(由于只使用一个 HTTPS 虚拟主机成为默认站点)我需要为 example.com 设置一个 https 虚拟主机,但我必须使用自签名证书,因为没有理由网站使用 SSL。

这意味着当有人访问 https://example.com他们得到一个浏览器警告页面,表明 SSL 是自签名的,然后一旦他们点击继续,他们就会被重定向到 HTTP

有什么方法可以在没有证书的情况下将 HTTPS 请求重定向到 HTTP

这是当前的虚拟主机:

<VirtualHost *:443>
ServerName about.example.com:443

DocumentRoot "/directory"
<Directory "/directoy">
AllowOverride All
Require all granted
</Directory>

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

SSLEngine on
SSLCertificateFile /etc/httpd/ssl/ExampleCOM.pem
SSLCertificateKeyFile /etc/httpd/ssl/AboutExampleCOM-key.pem
Header always set Strict-Transport-Security "max-age=15768000"
</VirtualHost>

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder on

# Disabled to avoid CRIME attack
SSLCompression off

# this usually compromises perfect forward secrecy
SSLSessionTickets off

# OCSP Stapling, httpd 2.3.3 or later
SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/var/run/ocsp(128000)

最佳答案

从根本上说,这是个问题。当通过 HTTPS 通信时,TLS 通信层是在交换任何内容之前设置的,即关于证书的警告发生在关于网站的任何信息被传输之前。因此,无论是否定义了 https,无论是否自签名,都需要一个证书来允许浏览器连接。

理想情况下,对于“最佳实践”,我们真的应该鼓励人们默认使用 HTTPS(我意识到这是一种开销,而且证书可能会很烦人,虽然 self 不应该有任何问题签名的证书,经常会出现问题和浏览器消息等)。

即使您有一个“只能做 http”的应用程序服务器,最佳实践通常是在该应用程序服务器前面放置一个 Web 服务器(例如 nginx 或 lighthttpd 或某种形式的负载平衡器),它也将提供您的 https终止。 - 这似乎是您对将请求转发到您的站点的 httprewrite 所做的。

您可能会发现一些便宜的 SSL 证书提供程序,但大多数浏览器都安装了这些提供程序?

关于linux - 如何在没有证书(Apache VirtualHosts)的情况下将 HTTPS 请求重定向到 HTTP 并避免证书警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32143210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com