如何仅使用 .htaccess 文件设置 ssl
Posted
技术标签:
【中文标题】如何仅使用 .htaccess 文件设置 ssl【英文标题】:How to setup ssl using only .htaccess file 【发布时间】:2016-10-19 17:13:21 【问题描述】:有没有人尝试为仅使用 .htaccess 文件的网站设置 ssl?
我阅读了许多指向 apache 的 httpd.conf 文件的文档,在 <virtual-host>
标签中添加了一些行。
但我无法访问我的虚拟主机上的 httpd.conf 文件...
我只能放。我的托管目录中的.htaccess 文件。
那么有没有办法只使用.htaccess文件来实现HTTPS网站。
注意:我已经拥有我的域的证书。
【问题讨论】:
如果您已经安装了 SSL 证书,那么您需要 .htaccess 做什么? 您的托管服务提供商很可能有一些上传证书的方法,如果没有通过上传证书自动启用 SSL,也有一些方法可以激活 SSL。 @OlafDietsche 是的,我的托管服务提供商提供了一种添加 SSL 的方法,但他们为此收取巨额费用,但我从 LetsEncrypt 免费获得了证书,并希望将它们用于我的网站 有些主机允许您上传自己的 SSL 证书以供使用。一方面,GoDaddy 让您做到这一点。我不确定其他主机。 @Raaghu ᴄɢɪ 脚本? 【参考方案1】:您可以从纯 HTTP 重定向到 HTTPS,但不能从 htaccess 激活 SSL/TLS。
要激活 SSL/TLS,您必须在其他指令中使用 SSLEngine
SSLEngine on
从文档中可以看出,
上下文:服务器配置、虚拟主机
这只能在服务器配置或虚拟主机上下文中实现,而不是在目录和 .htaccess 上下文中。
这意味着,您必须通过您的网络托管服务提供商为您提供的方式。当您已经拥有证书时,单独激活可能会更便宜甚至免费。通常,证书是使用 HTTPS 的昂贵部分。相比之下,激活 SSL 是一次性配置。
【讨论】:
【参考方案2】:基本上你不能。如果您只能修改 htaccess 文件,那么您的托管服务提供商可能会为您提供另一种设置证书的方法。如果没有,你就做不到。
【讨论】:
关于 ʜᴛᴛᴘꜱ 端口 80 的 ᴄɢɪ 脚本怎么样?【参考方案3】:(1) 您需要您的托管公司或其他公司提供的经过验证的证书。
(1.1) https://www.ionos.co.uk/security/ssl-certificate?ar=1#packages
(1.2) https://letsencrypt.org/
(2) 设置完成后,您可以使用https://yourdoman.com 连接到您的站点,您需要在文档根目录中编辑您的 .htaccess 文件。仅仅因为您拥有身份验证证书并不能使您安全。首先,您需要强制执行 HTTP 严格传输安全 (HSTS)。我引用“HSTS 允许网站请求始终通过 HTTPS 联系它。谷歌 Chrome、Firefox、Safari、Opera、Edge 和 IE 支持 HSTS”(chromium.org/hsts,2020)。您还需要将无端口 443 (https://) 流量(例如端口 80 (http://) 重定向到端口 443。这种组合应确保加密通信。但这仍然不能保证您的安全,因为您租用的服务器上可能仍有不安全的 SSL/TLS 版本可用。我希望这会有所帮助。
以下内容是从我的 .htaccess 文件中复制粘贴出来的;
##############################################
# HTTP STRICT TRANSPORT SECURITY #
##############################################
# Use HTTP Strict Transport Security to force client to use secure connections only
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
##############################################
# ENABLE REWRITE ENGINE #
##############################################
RewriteEngine On
RewriteBase /
##############################################
# FORCE PORT 443 #
##############################################
RewriteCond %HTTPS !=on
RewriteRule ^(.*)$ https://%HTTP_HOST%REQUEST_URI [L,R=301,NE]
#Force 443 no 80
RewriteCond %SERVER_PORT 80
RewriteRule ^(.*)$ https://www.yourdoman.com/$1 [R,L]
我希望这对某人有所帮助,问候...
【讨论】:
【参考方案4】:你可以阅读我认为对你有帮助的文件。
https://www.digicert.com/ssl-certificate-installation-apache-cpanel.htm
https://www.namecheap.com/support/knowledgebase/article.aspx/9418/0/cpanel
【讨论】:
链接只回答与链接无关。【参考方案5】:要强制使用 SSL,您需要使用的是:
RewriteEngine On
RewriteCond %HTTPS !=on
RewriteRule ^.*$ https://%SERVER_NAME%REQUEST_URI [R,L]
显然,您需要拥有 SSL 证书,您在问题中提到您确实拥有这些证书。
【讨论】:
这只会强制重定向到 https,而不是 ssl 本身以上是关于如何仅使用 .htaccess 文件设置 ssl的主要内容,如果未能解决你的问题,请参考以下文章
如何仅使用 .htaccess 将所有 url 重定向到 1 个 url
如何借助 .htaccess 设置在 HTML 文件中使用 PHP7 代码