首页>安全资讯>如何将一个HTTP网站升级到HTTPS

如何将一个HTTP网站升级到HTTPS

最近好多项目组提到升级HTTPS,正好周末查了查资料,整理了这篇关于如何将HTTP网站升级到HTTPS。升级到HTTP/2协议,必须先启用HTTPS。如果你不了解HTTPS协议(学名TLS协议)。

一、获取证书

升级到HTTPS协议的第一步,就是要获得一张证书。证书是一个二进制文件,里面包含经过认证的网站公钥和一些元数据,要从经销商购买。

证书有很多类型,首先分为三种认证级别。

域名认证(Domain Validation):最低级别认证,可以确认申请人拥有这个域名。对于这种证书,浏览器会在地址栏显示一把锁。 公司认证(Company Validation):确认域名所有人是哪一家公司,证书里面会包含公司信息。 扩展认证(Extended Validation):最高级别的认证,浏览器地址栏会显示公司名。

还分为三种覆盖范围。

单域名证书:只能用于单一域名,wosign.com的证书不能用于www.wosign.com 通配符证书:可以用于某个域名及其所有一级子域名,比如*.wosign.com的证书可以用于wosign.com,也可以用于www.wosign.com多域名证书:可以用于多个域名,比如wosign.com和wotrus.com

认证级别越高、覆盖范围越广的证书,价格越贵。还有一个免费证书的选择。为了推广HTTPS协议,电子前哨基金会EFF成立了Let's Encrypt,提供免费证书。拿到证书以后,可以用SSL Certificate Check检查一下,信息是否正确。

二、安装证书

证书可以放在/etc/ssl目录(Linux 系统),然后根据你使用的Web服务器进行配置。证书配置文件生成器,by Mozilla 配置文件模板,by SSLMate如果使用沃通ssl证书,请使用一键搞定https沃通ssl精灵。也可以通过技术支持协助安装,安装成功后,使用ssl检测工具检查一下证书是否生效。

https证书申请

三、修改链接

下一步,网页加载的HTTP资源,要全部改成HTTPS链接。因为加密网页内如果有非加密的资源,浏览器是不会加载那些资源的。

四、301重定向

下一步,修改Web服务器的配置文件,使用301重定向,将HTTP协议的访问导向HTTPS协议。

Nginx 的写法。

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

Apache 的写法(.htaccess文件)。

RewriteEngine OnRewriteCond %{HTTPS} offRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

五、安全措施

以下措施可以进一步保证通信安全。

5.1 HTTP Strict Transport Security (HSTS)

访问网站时,用户很少直接在地址栏输入https://,总是通过点击链接,或者301重定向,从HTTP页面进入HTTPS页面。攻击者完全可以在用户发出HTTP请求时,劫持并篡改该请求。另一种情况是恶意网站使用自签名证书,冒充另一个网站,这时浏览器会给出警告,但是许多用户会忽略警告继续访问。

"HTTP严格传输安全"(简称HSTS)的作用,就是强制浏览器只能发出HTTPS请求,并阻止用户接受不安全的证书。它在网站的响应头里面,加入一个强制性声明。

Strict-Transport-Security: max-age=31536000; includeSubDomains

上面这段头信息有两个作用。

(1)在接下来的一年(即31536000秒)中,浏览器只要向example.com或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。用户点击超链接或在地址栏输入http://www.example.com/,浏览器应当自动将http转写成https,然后直接向https://www.example.com/发送请求。

(2)在接下来的一年中,如果example.com服务器发送的证书无效,用户不能忽略浏览器警告,将无法继续访问该网站。HSTS很大程度上解决了SSL剥离攻击。只要浏览器曾经与服务器建立过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP。

该方法的主要不足是,用户首次访问网站发出HTTP请求时,是不受HSTS保护的。如果想要全面分析网站的安全程度,可以使用Mozilla的Observatory。

5.2 Cookie

另一个需要注意的地方是,确保浏览器只在使用HTTPS时,才发送Cookie。网站响应头里面,Set-Cookie字段加上Secure标志即可。

Set-Cookie: LSID=DQAAAK...Eaem_vYg; Secure

最新资讯

代码签名证书原理和作用

Hash算法的特点、应用和实现方法详解

rsa算法产生的过程与原理详解

Windows\Apple\Mozilla\Android删除根证书的方法

Firefox浏览器中出现SSL证书错误的解决方法

标签推荐:数字证书申请 | 域名ssl证书 | https证书申请| 数字证书过期| 网站证书安装| 可靠的ssl证书| 小程序证书| ca认证电子签名| 微软代码签名| android数字签名| java代码签名| ssl证书部署| 时间戳技术| 电子签名技术| https证书配置| 谷歌浏览器证书| tomcat数字证书| openssl漏洞| ECC加密算法| 服务器SSL证书| 链路层劫持| 物联网安全技术| 火狐插件签名证书