课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
一般情况下我们的网站搭建的都是http的格式的,那么如何将网站升级成https的格式呢?
升级到 HTTPS 协议的第一步,就是要获得一张证书。
证书是一个二进制文件,里面包含经过认证的网站公钥和一些元数据,要从经销商购买。
GoGetSSL
#
#
证书有很多类型,首先分为三种认证级别。
域名认证 (Domain Validation):最低级别认证,可以确认申请人拥有这个域名。对于这种证书,浏览器会在地址栏显示一把锁。
公司认证 (Company Validation):确认域名所有人是哪一家公司,证书里面会包含公司信息。
扩展认证 (Extended Validation):最高级别的认证,浏览器地址栏会显示公司名。
还分为三种覆盖范围。
单域名证书 :只能用于单一域名, # 的证书不能用于 www.#
通配符证书 :可以用于某个域名及其所有一级子域名,比如 *.# 的证书可以用于 # ,也可以用于 www.#
多域名证书 :可以用于多个域名,比如 # 和 #
认证级别越高、覆盖范围越广的证书,价格越贵。
还有一个免费证书的选择。为了推广HTTPS协议,电子前哨基金会EFF成立了 Let's Encrypt ,提供免费证书( 教程 和 工具 )。
拿到证书以后,可以用 SSL Certificate Check 检查一下,信息是否正确。
二、安装证书
证书可以放在 /etc/ssl 目录(Linux 系统),然后根据你使用的Web服务器进行配置。
证书配置文件生成器 ,by Mozilla
配置文件模板 ,by SSLMate
如果使用 Let's Encrypt 证书,请使用自动安装工具 Certbot 。
安装成功后,使用 SSL Labs Server Test 检查一下证书是否生效。
三、修改链接
下一步,网页加载的 HTTP 资源,要全部改成 HTTPS 链接。因为加密网页内如果有非加密的资源,浏览器是不会加载那些资源的。
上面这行加载命令,有两种改法。
其中,改法二会根据当前网页的协议,加载相同协议的外部资源,更灵活一些。
另外,如果页面头部用到了 rel="canonical" ,也要改成HTTPS网址。
四、301重定向
下一步,修改 Web 服务器的配置文件,使用 301 重定向,将 HTTP 协议的访问导向 HTTPS 协议。
Nginx 的写法 。
server {
listen 80;
server_name # www.#;
return 301 #$request_uri;
}
Apache 的写法 ( .htaccess 文件)。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
五、安全措施
以下措施可以进一步保证通信安全。
5.1 HTTP Strict Transport Security (HSTS)
访问网站时,用户很少直接在地址栏输入 https:// ,总是通过点击链接,或者3xx重定向,从 HTTP 页面进入 HTTPS 页面。攻击者完全可以在用户发出 HTTP 请求时,劫持并篡改该请求。
另一种情况是恶意网站使用自签名证书,冒充另一个网站,这时浏览器会给出警告,但是许多用户会忽略警告继续访问。
"HTTP严格传输安全"(简称 HSTS)的作用,就是强制浏览器只能发出 HTTPS 请求,并阻止用户接受不安全的证书。
它在网站的响应头里面,加入一个强制性声明。以下例子摘自 维基百科 。
Strict-Transport-Security: max-age=31536000; includeSubDomains
上面这段头信息有两个作用。
(1)在接下来的一年(即31536000秒)中,浏览器只要向 # 或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。用户点击超链接或在地址栏输入http://www.#/ ,浏览器应当自动将 http 转写成 https ,然后直接向 https://www.#/ 发送请求。
(2)在接下来的一年中,如果 # 服务器发送的证书无效,用户不能忽略浏览器警告,将无法继续访问该网站。
HSTS 很大程度上解决了 SSL 剥离攻击。只要浏览器曾经与服务器建立过一次安全连接,之后浏览器会强制使用 HTTPS ,即使链接被换成了 HTTP 。
该方法的主要不足是,用户首次访问网站发出HTTP请求时,是不受HSTS保护的。
5.2 Cookie
另一个需要注意的地方是,确保浏览器只在使用 HTTPS 时,才发送Cookie。
网站响应头里面, Set-Cookie 字段加上 Secure 标志即可。
达内时代科技集团致力于培养面向电信和金融领域的Java、C++、C#/.Net、3G/Android、3G/IOS、PHP、嵌入式、软件测试、UID、网络营销、网络工程、会计、UED、web、Unity3D、大数据、童程童美等17大方向中高端软件人才课程与少儿教育课程。选择运城达内培训,不再孤军奋战,轻轻松松做IT高薪白领。运城达内培训带领有明确目标的学子迈向成功之路!想找工作的求职者可以加QQ:3373924515(太原达内就业服务部)咨询了解。