1and1 UK hosting为您的网站提供免费的GeoTrust SSL证书。
但不想破坏我现有的网站,我想事先知道在设置时会发生什么。
目前我已经设置了这样的网站空间:
/www <-- www.foo.com
+-- /images
+-- /css
/test <-- test.foo.com
+-- /images
+-- /css
我只想要www.foo.com网站的SSL证书。
文档告诉您如何设置证书 - 但不会告诉您在执行时会发生什么。
它是否像创建一个名为/ www-ssl的新顶级目录一样容易?如果是这样,我可以将网站复制到那里并使用它。
感谢。
答案 0 :(得分:2)
有趣的是,原始问题实际上是我所拥有的 实际上刚刚完成了过去两天的推出。
如果你只是使用1and1的网站空间/域名(不是服务器),它非常简单(它不会更改文件,它不会自动使网站成为SSL) 。它将继续作为HTTP服务器运行,直到您开始编辑.htaccess文件以重定向到HTTPS。
您应该注意:如果您打算使用1&amp; 1的CDN并想要SSL,那么他们给您的免费CD无法使用它。 (我猜测它 至于如何在区域中创建CNAME的自动化过程 记录彼此之间的冲突。这也是您需要的偶然原因 确保你使用的是1和1的NS,以便他们能够控制 区域记录,用于设置CDN或Geotrusts SSL的更改 CERT)
你要么必须购买带有SSL证书的CDN套餐(价格更贵),要么你可以做我已经完成的事情:
使用1and1 CDN&amp; SSL和SSL&amp; Cloudflare是后者版本更便宜(它使用什么是免费的,你已经拥有的,以及为你提供更多的CDN选项。)你唯一丢失的是Mirage缓存(手机的图像优化,它在beta)你当然可以支付cloudflare来获得该选项(以及其他附加功能),但说实话,这是一个很小的损失。
Geotrust SSL 与 SSL Starter 证书之间存在差异。
Geotrust SSL Cert将同时处理 foo.com , www.foo.com 。 启动程序SSL只处理其中一个,而不是两者。
如果检查设置您的GeoTrust SSL证书以处理 www.foo.com 和 foo.com
获得证书后,只需将以下内容添加到 .htaccess 文件中(假设foo.com流量也是www.foo.com流量)
<If "%{REQUEST_SCHEME} =='http' && (-f %{REQUEST_FILENAME} || -d %{REQUEST_FILENAME})">
Redirect permanent "/" "Https://foo.com/"
</If>
<ElseIf "(%{HTTP_HOST} == 'foo.com') && (-f %{REQUEST_FILENAME} || -d %{REQUEST_FILENAME})">
Redirect permanent "/" "Https://www.foo.com/"
</ElseIf>
这可以在apache&gt; = 2.4
中代替mod_rewrite使用使用REQUEST_SCHEME,因为服务器没有使用FULL(Strict)方法,其中服务器本身设置为在HTTPS中运行。某些mod_rewrite规则实际上会导致无限的*重定向循环。 (*直到服务器从递归中超时)
虽然可以减少这种情况,因此您的重定向更少,如果您打算在使用cloudflare时进一步收紧SSL,您可能最终会使用HTTP Strict Transport Security (HSTS)并且它很严格在HTTP如何升级到HTTPS。下面的伪代码显示了它需要的高程(必须以这种方式执行此操作,因为此处允许的链接有限):
http(域)&gt; 301&gt; https(domain)&gt; 301&gt; HTTPS(子+域)
我并不完全确定HSTS协议如何处理我最初的意图是如何找不到文件/目录的失败而创建的404消息破坏了它的严格重定向。
(如果您使用此方法,请清理404消息的处理方式,因为它可能超出HTTPS。)。
至于 test.foo.com test 文件夹。你可以像对待那样对待它 已经,它已经不在SSL证书之内了,也没有得到 www文件夹的.htaccess。
如果/当您开始设置 HSTS 时,您需要在If / ElseIf语句中添加标题。
<If "%{REQUEST_SCHEME} =='http' && (-f %{REQUEST_FILENAME} || -d %{REQUEST_FILENAME})">
Redirect permanent "/" "Https://foo.com/"
Header set Strict-Transport-Security "max-age=2592000; includeSubDomains; preload" env=HTTPS
</If>
<ElseIf "(%{HTTP_HOST} == 'foo.com') && (-f %{REQUEST_FILENAME} || -d %{REQUEST_FILENAME})">
Redirect permanent "/" "Https://www.foo.com/"
Header set Strict-Transport-Security "max-age=2592000; includeSubDomains; preload" env=HTTPS
</ElseIf>
我希望有所帮助,
答案 1 :(得分:0)
修改强> 为了澄清,问题似乎更多是关于TLS如何工作而不是如何解决它。
想象一下,你正试图向现实世界的顾客发送杂志,然后将这些杂志贴在薄薄的,薄薄的塑料包装纸上,地址在角落里,没关系,有效,但是邮差,整个邮政工作人员和任何突然进入邮局的人都能看到你发布的内容,以及你朋友收到的杂志。
所以,你更新并将你的杂志发布在厚厚的深色纸袋中,用胶带包裹,这意味着没有一个在途可以查看杂志,没有人知道包含什么杂志在纸袋内。这是TLS为网站所做的非常粗略的设备,它不会改变网站内容(杂志),但它确实确保这些内容更难以嗅探和阅读。
通过说你想加密一些网站,但你不想加密其他网站,这似乎有点奇怪,因为所有客户(在上面的场景中)肯定希望他们的杂志以厚纸袋而不是薄透明的方式交付塑料包装纸。由于不涉及任何成本,如果仅加密某些您的网站或数据,则几乎没有任何收益。
历史原创答案:
可以为任何网站启用TLS证书,但不是必需,除非您告知网站要求它。您可以做的是为您的帐户设置证书(这将涵盖帐户中的所有域,包括子域,除非有特定的设置选项以避免子域),然后使用htaccess
告诉服务器澄清您的操作,所以你可以告诉服务器:
RewriteEngine On
rewriteCond %{HTTP_HOST} ^www.(.*)$
rewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
因此,这将告诉您的服务器如果访问www.site.whatever
然后使用HTTPS ...如果您真的想要,您可以使用类似的反转规则来防止使用安全的非www子域TLS端口,但实际上,您为什么不想对所有Web数据使用TLS加密?