HTTP 协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的 HTTP 的网站是不太安全的。所以, Google 的 Chrome 浏览器将在 2017 年 1 月开始,标记使用不加密的 HTTP 协议的网站为 Not Secure,不安全。

现在你要做的就是让网站支持 HTTPS,并不难,而且现在可以免费做到。要使用 HTTPS,你需要安全机构颁发的安全证书,然后配置服务器,去使用这个证书。下面介绍一下在阿里云免费申请安全证书,还有配置一般的 NGINX 服务器支持 HTTPS 的方法。

申请证书

  1. 登录:阿里云控制台,产品与服务,证书服务,购买证书。
  2. 购买:证书类型选择 免费型DV SSL,然后完成购买。
  3. 补全:在 我的证书 控制台,找到购买的证书,在操作栏里选择 补全。填写证书相关信息。
  4. 域名验证:可以选择 DNS,如果域名用了阿里云的 DNS 服务,再勾选一下 证书绑定的域名在 阿里云的云解析。
  5. 上传:系统生成 CSR,点一下 创建。
  6. 提交审核。

如果一切正常,10 分钟左右,申请的证书就会审核通过。

申请证书要注意的是验证域名,就是你要验证你想绑定证书的域名是你自己的,如果选择使用 DNS 验证,你需要在域名的管理里,添加一条特定的 DNS 记录,这样就可以证名这个域名是你自己的。使用了阿里云的云解析服务,这个步骤可以自动完成,会自动为你添加一条 DNS 验证的记录。

输入证书要绑定的域名:

填写个人信息:

在域名的管理里,因为我用了阿里云的 DNS 解析服务,所以会自动添加一条 CNAME 记录,这条记录就是验证域名所有权用的:

下载证书

在阿里云的证书管理那里,如果申请的证书审核通过,你就可以下载了,点击 下载,可以选择不同的类型,可以选择 NGINX,或 Apache 之类的服务器。根据自己网站的 Web 服务器类型,下载对应的证书。解压以后,你会得到两个文件一个是 *.key,一个是 *.pem。

配置 NGINX 的 HTTPS

有了证书,就可以去配置 Web 服务器去使用这个证书了,不同的 Web 服务器地配置方法都不太一样。下面用 NGINX 服务器作为演示。我的域名是 ninghao.org,出现这个文字的地方你可以根据自己的实际情况去替换一下。

下载并上传证书

创建一个存储证书的目录:

sudo mkdir -p /etc/nginx/ssl/ninghao.org

把申请并下载下来的证书,上传到上面创建的目录的下面。我的证书的实际位置是:

/etc/nginx/ssl/ninghao.org/213985317020706.pem
/etc/nginx/ssl/ninghao.org/213985317020706.key

NGINX 配置文件

你的网站可以同时支持 HTTP 与 HTTPS,HTTP 默认的端口号是 80,HTTPS 的默认端口号是 443。也就是如果你的网站要使用 HTTPS,你需要配置网站服务器,让它监听 443 端口,就是用户使用 HTTPS 发出的请求。

下面是一个基本的监听 443 端口,使用了 SSL 证书的 NGINX 配置文件,创建一个配置文件:

touch /etc/nginx/ssl.ninghao.org.conf

把下面的代码粘贴进去:

server {
listen 443;
server_name ninghao.org;
ssl on;
root /mnt/www/ninghao.org;
index index.html; ssl_certificate /etc/nginx/ssl/ninghao.org/213985317020706.pem;
ssl_certificate_key /etc/nginx/ssl/ninghao.org/213985317020706.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
}

上面的配置里,ssl_certificate 与 ssl_certificate_key 这两个指令指定使用了两个文件,就是你下载的证书,解压之后看到的那两个文件,一个是 *.pem,一个是 *.key。你要把这两个文件上传到服务器上的某个目录的下面。

重新加载 NGINX 服务:

sudo service nginx reload

或:

sudo systemctl reload nginx

如果网站放在阿里云服务器上, 需检查阿里云安全组是否放开443 端口。

验证配置

在浏览器上输入带 https 的网站地址:https://ninghao.org

如果正确的配置了让服务器使用 SSL 证书,会在地址栏上显示一个绿色的小锁头图标。

点开那个小锁头,会显示安全连接,再打开 详细信息。

提示:

This page is secure (valid HTTPS).

打开 View certificate,会显示证书的相关信息。

搜索引擎优化

2015 年 5 月 25 日,百度发公告声明已全面支持 HTTPS 网页的收录,使用 HTTPS 的网页被认为更安全,所以在排名上会被优先。 百度还推荐使用 301 重定向,把网站的 HTTP 重定向到 HTTPS 。

前几天我让宁皓网支持 HTTPS,并观察了搜索量,并未受到影响。所以,至少不用担心换成 HTTPS 以后,搜索量会下降。不过百度的反应一般都比较慢,需要给他更长的时间。换成 HTTPS 的后两天,谷歌已经收录了 HTTPS 版本的首页,但是百度至今还没有反应。不管怎么样,使用 HTTPS 都是迟早要做的事情。

NGINX 配置使用 301 重定向:

server {
listen 80;
server_name ninghao.org;
return 301 https://$host$request_uri;
}

上面的配置会让对 HTTP 网页的请求,重定向到 HTTPS 版本的网页上。

用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS的更多相关文章

  1. 最新阿里云申请免费SSL证书实现网站HTTPS化(图文教程一)

    一.申请免费SSL证书: 1.登录阿里云: 2.领取代金券礼包: https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=0a ...

  2. 最新阿里云服务器免费SSL证书配置HTTPS的两种方法(图文教程二)

    在大家学习如何利用免费SSL证书配置网站HTTPS之前,我们先要搞清楚为什么要开启HTTPS,这个绿色的小锁真的有用吗?所谓的HTTPS其实是(安全套接字层超文本传输协议)是以安全为目标的HTTP通道 ...

  3. 阿里云申请免费SSL证书,并配置到Tomcat,实现https访问

    第一步:阿里云免费https证书安装  https://jingyan.baidu.com/article/fdffd1f8619481f3e98ca196.html 第二步:阿里云申请免费SSL证书 ...

  4. 关于阿里云Symantec免费DV证书部署HTTPS

    获取阿里云Symantec免费DV证书: 官方文件说明: 证书文件214188487290026.pem,包含两段内容,请不要删除任何一段内容. 如果是证书系统创建的CSR,还包含:证书私钥文件214 ...

  5. 阿里云负载均衡SSL证书配置

    阿里云负载均衡SSL证书 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/8908461.html 好久了呢,距上篇博客的这段时间中:考试.搬家.工作赶工.业务考察 ...

  6. 十大免费SSL证书:网站免费添加HTTPS加密

    SSL证书,用于加密HTTP协议,也就是HTTPS.随着淘宝.百度等网站纷纷实现全站Https加密访问,搜索引擎对于Https更加友好,加上互联网上越来越多的人重视隐私安全,站长们给网站添加SSL证书 ...

  7. 阿里云域名的ssl证书申请与腾讯服务器域名的证书安装

    阿里云域名中的SSL证书申请,腾讯云服务器中的证书安装: 因为公司的与域名都在阿里云上面,服务器却用的是腾讯云的.记得前2年用阿里云管理平台的时候,域名的SSL证书都很好找,也许是长时间不用,找SSL ...

  8. 分享一个免费SSL证书申请网站,给网站开启https协议 | 张戈博客

    这些天,由于公司的业务需求,接触到了ssl证书和https协议.博客前几篇文章也分享了在WEB服务器上安装SSL证书,为网站开启https协议的教程,感兴趣的童鞋可以前往查看相关文章: <Lin ...

  9. 亚马逊EC2服务器申请+NODE服务器部署+阿里云域名申请+SSL证书使用

    最近,由于项目需要,自己申请了一台亚马逊用于部署网站测试,在使用期间,发现网上没有一篇非常完整的文章讲解从服务器申请到域名解析,SSL证书申请的整个流程.所以自己总结一下,以供大家学习! 一.亚马逊E ...

随机推荐

  1. PHP error_reporting() 错误控制函数功能详解

    定义和用法: error_reporting() 设置 PHP 的报错级别并返回当前级别.   函数语法: error_reporting(report_level)   如果参数 level 未指定 ...

  2. dedecms中{dede:myad name='about'/} 修改内容

    网站首页index.htm中调用这个命令,显示一段文字,但是想要修改内容.所以想知道这个命令指定的文件内容在哪里寻找或者指定内容在哪里修改? 匿名 | 浏览 6036 次 发布于2014-02-19 ...

  3. tp5 url 线上访问 在nginx 上 出现404错误,解决办法(1.80nginx 配置 pathInfo)

      对于ThinkPHP的URL访问路劲如:http://域名/index.php/Index/BlogTest/read,原先的Nginx的是不支持的pathinfo路劲的,导致你在thinkPHP ...

  4. Netty 拆包粘包和服务启动流程分析

    Netty 拆包粘包和服务启动流程分析 通过本章学习,笔者希望你能掌握EventLoopGroup的工作流程,ServerBootstrap的启动流程,ChannelPipeline是如何操作管理Ch ...

  5. selenium+python自动化测试系列(一):登录

        最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重,为了减轻回归测试的工作量,所以考虑后台 ...

  6. Express使用进阶:cookie-parser中间件实现深入剖析

    文章导读 cookie-parser是Express的中间件,用来实现cookie的解析,是官方脚手架内置的中间件之一. 它的使用非常简单,但在使用过程中偶尔也会遇到问题.一般都是因为对Express ...

  7. JS实现倒计时

    HTML部分: <div class="div"> <div id="div"> </div> </div> C ...

  8. BFC(块级格式上下文)

    BFC的生成 满足下列css声明之一的元素便会生成BFC 根元素 float的值不为none overflow的值不为visible display的值为inline-block.table-cell ...

  9. Oracle多行记录合并的几种方法

    今天正好遇到需要做这个功能,顺手搜了一下网络,把几种方法都列出来,方便以后参考. 1 什么是合并多行字符串(连接字符串)呢,例如: SQL> desc test; Name Type Nulla ...

  10. Activity的setContentView的流程

    最简单的Activity中的内容大致是这样的: public class MainActivity extends Activity { @Override public void onCreate( ...