将网站移至HTTPS / SSL提示与技巧

QQ20200117-221201.png

随着国内信息安全事件频发,等保要求等。https就成为热门话题。为了强调加密敏感数据的重要性,Google Chrome浏览器(自2017年1月起)每当您访问未加密(潜在的)敏感数据(例如表格)的网站时,地址栏旁边都会显示一个清晰的警告。在2019年谷歌团队发出的一份声明中表示,谷歌计划在2020年开始,浏览器中将执行http://页面将不再加载HTTP子资源,这样阻止HTTP页面相关混合内容。

2018年,我们在做网站改版的过程中,决定切换到HTTPS协议来访问我们的网站,以加密方式传输敏感数据,防止中间人攻击等。

这篇文章根据我们自己的经验描述了一些有用的技巧,如果您的网站考虑切换,这些技巧可能会派上用场。 

如何切换?

为了确保数据安全,因此我们在2018年进行了网站改版升级,以确保我们在自己的网站上拥有SSL证书。如果您决定进行切换至https,则需要考虑一些事项,以确保您的网站在完成后能够完全按预期工作。

  • 您需要更改所有内部链接。这也意味着更新到资产的链接(必要时)。确保检查主题并更改对CSS,图像和JavaScript文件的引用。另外,您可以更改所有链接以其开头,//而不是链接https://相对于协议的URL。

  • 确保您的CDN也支持SSL。我们利用阿里云和七牛云,它使您可以轻松地在CDN子域上设置SSL。

  • 您可以选择各种级别的SSL,每种级别各有优缺点。

  • 确保您网站head部分中存在规范链接,以正确重定向从http://到的所有流量https://

Google使用https的相关介绍(需自备梯子):点击访问

百度使用https的相关介绍:点击访问

启用https是否影响我的排名?

如上一节所述,如果您不作相应的计划,那么从HTTP迁移到HTTPS可能会对您的排名产生轻微影响。但是,切换到HTTPS后,您的排名实际上会随着时间的推移而提高。Google 在2014年宣布拥有SSL证书将被认为是积极的排名因素,百度也是在2014年底进行https的改造,同时对https优先收录,因此值得进行投资。

为确保蜘蛛在迁移后可以更快地为您的网站重新爬取并索引,请确保您https://在流量较低的时间内迁移到。这样蜘蛛可以使用服务器的更多资源。只需考虑到中型网站可能需要一段时间才能重新获得排名。建议迁移后立即生成sitemap,这样,蜘蛛便可以更快地重新计算您的网站并为其索引。

在服务器上设置HTTPS和SSL

一般来说,阿里云,腾讯云,百度云等空间提供商都提供证书服务,允许您启用HTTPS /订购证书。有多种证书供你选择,它们在某些方面有所不同。每种证书价格功能都不同,因此在购买之前,请确保您您需求和预算!

如果您对预算有一点点的困扰,也可以选择免费的DV证书,如 Let’s Encrypt

如果您是网站管理员,并且采用的是云主机,则必须先在服务器配置中启用一些功能,然后才能使用SSL证书。下面简单说一下启用ssl证书的一些操作步骤。

OCSP stapling

在HTTPS通信过程时,浏览器通过CRL和OCSP来验证服务器端下发的证书链是否已经被撤销。

必须检查SSL证书的有效性可能会导致加载速度下降。为了克服这个问题,您可以使用OCSP stapling。OCSP是实时证书在线验证协议,用来弥补CRL机制的上述不足之处,通过OCSP浏览器可以实时向CA机构验证证书,OCSP使服务器可以在检查SSL证书时下载证书供应商的响应副本。这意味着,一旦浏览器连接到服务器,它将根据服务器上的副本检查证书的有效性,而不必查询证书供应商本身,从而显着提高了性能。

Apache

在Apache服务器上启用OCSP stapling之前,请通过在服务器上运行命令apache2 -v(或httpd -v)来检查您是否正在运行2.3.3+版本的Apache 。较低版本的Apache不支持此功能。

如果按照“在服务器上设置HTTPS和SSL”章节的描述完成了在服务器上设置HTTPS的过程,则您应该已经接触到专门用于HTTPS / SSL的VirtualHost配置。

在Apache虚拟主机配置文件中,执行以下步骤:

  1. 在虚拟主机VirtualHost部分,添加SSLUseStapling on

  2. 在虚拟主机VirtualHost上方,添加SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

  3. 通过apachectl -t来检查配置是否正确。没问题了之后,重新加载systemctl restart httpd.service

Nginx

Nginx也支持OCSP stapling。在编辑服务器配置之前,请通过nginx -v命令来检查您是否正在运行Nginx的1.3.7+版本。较低版本的Nginx不支持此功能。

如果您按照“在服务器上设置HTTPS和SSL”部分中的描述完成了在服务器上设置HTTPS的过程,那么您应该已经接触了专门用于HTTPS / SSL的Nginx配置。

在Nginx的配置文件,在server {}部分中添加以下行:

ssl_stapling on;ssl_stapling_verify on;ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;

最后一行引用了一个文件ca-certs.pem,该文件包含受信任的CA证书列表。使用OCSP时,此文件用于验证客户端证书。

将这些配置添加到配置文件后,通过运行来检查配置是否仍然有效nginx -t。如果是这样,请通过运行重新加载systemctl reload nginx.service。 

HSTS

严格传输安全标头(HTTP Strict Transport Security,简称HSTS)是另一个优化功能,HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。启用此功能相对比较容易。

Apache

如果您正在运行Apache,请先通过a2enmod headers启用Apache Headers模块。之后,只需将以下行添加到您先前为HTTPS设置的VirtualHost配置中即可:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

重新加载Apache服务即可生效了。

Nginx

Nginx要求您在server {}服务器配置文件的部分中添加以下行:

add_header Strict-Transport-Security max-age=31536000;

测试

要查看您的SSL证书是否正常运行,可以百度下SSL证书在线检测,填写您的域名,然后查看获得的分数。比如:https://myssl.com/ssl.html

QQ20200117-215356.png

重定向URL

为了确保将请求正确重定向到HTTPS URL,您需要在配置中添加额外的一行。这样,尝试通过HTTP访问您的网站的流量将自动重定向到HTTPS。

Apache

在默认的VirtualHost配置中(用于HTTP请求的配置),添加以下内容以确保URL正确重定向:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

与我们之前所做的其他更改一样,不要忘记重新加载Apache!

Nginx

在Nginx中,更改用于HTTP请求的默认配置文件,并进行如下更改:

server {    
    listen 80;    
    server_name your-site.com www.your-site.com;    
    return 301 https://your-site.com$request_uri;    
}

测试这些更改之前,请不要忘记重新加载Nginx。

结论

“我应该切换到HTTPS吗?”答案:是。使用HTTPS可确保以更安全的方式在网络上发送私人(用户)信息。尤其是在处理货币交易时,必须使用HTTPS。


最后,我司建议企业在信息化过程中,将自己的网站、信息系统、ERP等基于B/S架构的系统均启用HTTPS!