HTTP 协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的 HTTP 的网站是不太安全的。所以, Google 的 Chrome 浏览器将在 2017 年 1 月开始,标记使用不加密的 HTTP 协议的网站为 Not Secure,不安全。
现在你要做的就是让网站支持 HTTPS,并不难,而且现在可以免费做到。要使用 HTTPS,你需要安全机构颁发的安全证书,然后配置服务器,去使用这个证书。下面介绍一下在阿里云免费申请安全证书,还有配置一般的 NGINX 服务器支持 HTTPS 的方法。
申请证书
- 登录:阿里云控制台,产品与服务,证书服务,购买证书。
- 购买:证书类型选择 免费型DV SSL,然后完成购买。
- 补全:在 我的证书 控制台,找到购买的证书,在操作栏里选择 补全。填写证书相关信息。
- 域名验证:可以选择 DNS,如果域名用了阿里云的 DNS 服务,再勾选一下 证书绑定的域名在 阿里云的云解析。
- 上传:系统生成 CSR,点一下 创建。
- 提交审核。
如果一切正常,10 分钟左右,申请的证书就会审核通过。
2018-01-04:您也可以使用 Let's Encrypt 签发的证书。
申请证书要注意的是验证域名,就是你要验证你想绑定证书的域名是你自己的,如果选择使用 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
验证配置
在浏览器上输入带 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 版本的网页上。
HTTPS
评论
阿里云的ssl需要实名认证备案这些前提吗
7 年 11 个月 以前
不确定,不过这些应该都是基础的,不用担心。备案现在变得简单多了。
7 年 11 个月 以前
凡是国内的云服务商提供的 HTTPS 证书,都需要备案。
7 年 11 个月 以前
不错,正好用得上!
7 年 11 个月 以前
如果不是 阿里服务器 ,亚马逊服务器如何申请免费证书?
7 年 11 个月 以前
这个只需验证域名所有权,不用管服务器在哪。
7 年 11 个月 以前
SEO不清楚如何
7 年 11 个月 以前
SEO 应该不用担心,百度官方声明里提过,HTTPS 的页面更安全,所以排名会被优先考虑。
7 年 11 个月 以前
能出一个阿帕奇配置方法吗?我网站马上就要上线了,想直接用https
7 年 11 个月 以前
证书已经申请下来了
7 年 11 个月 以前
我没有在 Apache 上试过,在下载证书的时候,有个提示,让你选择 NGINX 或 Apache,在那个选择页面上,有一个配置教程。
7 年 11 个月 以前
请问,如果是在负载均衡SLB上使用需要额外做什么调整吗?
7 年 11 个月 以前
负载均衡有另一种配置的方法,你可以不必配置服务器,直接配置负载均衡,就是让负载均衡使用你申请的 SSL 证书。
7 年 11 个月 以前
有配置负载均衡的方法吗?
7 年 11 个月 以前
暂时先参考阿里云官方的文档吧。
7 年 11 个月 以前
好的 谢谢了~
7 年 11 个月 以前
别客气 :)
7 年 11 个月 以前
才刚学会建站,请问我用免费的空间,然后绑定的域名,怎么弄成https的呢,免费证书已经申请好了,手里做的有php的也有.net的网页,该怎么用证书呢,是本地修改?小白求教。。。谢谢您了
7 年 11 个月 以前
你可能不能自己控制,有可能是空间决定的你到底能不能用 SSL 证书。
7 年 11 个月 以前
用的空间的话,得看空间服务商有没有提供 SSL 或者说 HTTPS 的服务。一般不能自己配置。
7 年 11 个月 以前
皓哥,我按照上面的步骤配置了下,一直不生效,然后又按照阿里云给的操作配置了下 也不行。
7 年 10 个月 以前
仔细再检查一下,一定是哪里错了。证书的路径正常吗?有没有重启 NGINX? 再试试就能行了 :)
7 年 10 个月 以前
我反反复复查询了好几遍,两种方法都行不通,皓哥,会不会和阿里云的安全组或服务器环境有关呢?
7 年 10 个月 以前
我觉得不是。
7 年 10 个月 以前
行,我再试试。重新配置一下看看 ^_^
7 年 10 个月 以前
皓哥,找到原因了,我之前写到一块儿了,现在分别写到不同的 /etc/nginx/conf.d/conf 文件里就可以了
现在还有个问题:怎么把 http://kfzhengyu.com http://www.kfzhengyu.com https://kfzhengyu.com 重定向到https://www.kfzhengyu.com 呢
7 年 10 个月 以前
参考文章:https://ninghao.net/blog/4488 ,最底下有关于 301 重定向的 NGINX 配置代码。
7 年 10 个月 以前
我记得你以前域名域名解析都在 DNSPOD上的,现在都转到阿里了吗?
这个免费证书不在买的域名或者不在阿里做的解析应该都可以用吧??
7 年 9 个月 以前
昨天刚刚发布了《HTTPS 与 HTTP2》https://ninghao.net/course/4539
7 年 9 个月 以前
为什么我的不行?
7 年 9 个月 以前
貌似我没有开启 SSL 443端口吧?
7 年 9 个月 以前
二级域名怎么用?是重新申请个证书还是怎么设置一下?
比如,现在 lekee.cc 已经可以用 https 现在有个 cdn.leeke.cc 这个域名也想用 Https 这个协议怎么办?
7 年 9 个月 以前
重新再为二级域名申请一个新的证书。
7 年 9 个月 以前
视频里301重定向的,http 定向 https
显示
将您重定向的次数过多
7 年 9 个月 以前
这个问题,是循环重定向了。把之前是 80 和 443 写在同一个 server 里面分开就好
7 年 9 个月 以前
王兄,对 HTTPS 这个视频补充下,比如大家以前都用WP DP 做的网站,域名都用http的,现在这些网站的域名要换成了 HTTPS 该怎么弄?
特别我官网用七牛的cdn 这个又该怎么办。。。一点小建议
7 年 9 个月 以前
嗯,我做了一个《HTTPS 与 HTTP2》 的视频,里面介绍了申请 SSL 证书,配置服务器使用 SSL 证书的方法。这样你的 WordPress 与 Drupal 网站就可以使用 HTTPS 访问了。https://ninghao.net/course/4539
7 年 9 个月 以前
其实,让网站使用 HTTPS,跟您用的网站系统没有关系,你只需要让你的网站服务器支持 HTTPS 就行了。正确的配置了 NGINX 服务器就可以了。
7 年 9 个月 以前
七牛 CDN 你应该需要单独到七牛那里去配置一下。因为这跟您自己的服务器没有关系。
7 年 9 个月 以前
这个我看了,你演示的页面应该只是 HTML,所以 ssl.ninghao.cc.conf Nginx 配置文件里没有关于 PHP 的配置
7 年 9 个月 以前
我想问下,对于已经被收录的其它页面,怎么做301跳转呢。
7 年 6 个月 以前
您指的是 http 跳转到 https 吗?具体还要看您的服务器,如果用的是 nginx,你可以为网站的配置再创建一个 server 区块,里面监听 80 ,里面用一个 return 301 https://$host$request_uri; 参考:https://talk.ninghao.net/t/nginx-https-301/5210/3 ,视频:https://ninghao.net/video/4544
7 年 6 个月 以前
我是这么写的,也能跳,但不知道对不对,您看可以吗,
server {
listen 80;
server_name www.wxxcx5.com wxxcx5.com;
#301
rewrite ^/(.*)$ https://www.wxxcx5.com/$1 permanent;
}
7 年 6 个月 以前
有人这样试了下,说成功了。配置:if ($host = www.ninghao.net) {
return 301 https://ninghao.net$request_uri;
}
7 年 6 个月 以前
需要测试,我也不能确定到底怎么样才行。因为环境都不太一样。
7 年 6 个月 以前
另外,我用了百度云加速的cnd,这个不用管吧,我只管配制我的nginx
7 年 6 个月 以前
在百度云上搜搜看,有没有相关的说明与配置文档吧。
7 年 6 个月 以前
请问绑定的那个域名必须是主域名吗?二级域名可以吗?
7 年 5 个月 以前
二级域名也可以,不过你在申请证书的时候,域名应该是二级域名。
7 年 5 个月 以前
恩恩 可以了^_^
7 年 5 个月 以前
:)
7 年 5 个月 以前
王老师 为什么我都配置好了访问不到配置好的域名呢?域名的记录值是阿里发给的 我发现我都没用到我的ip啊 这是怎么回事呢?
7 年 5 个月 以前
这个网站可以直接申请免费证书,方便很多:https://freessl.org
7 年 3 个月 以前
重定向还直接访问还是会报400:The plain HTTP request was sent to HTTPS port
百度了以下:
把 ssl on;删掉,
直接直接在listen 443后面加ssl即可如:
listen 443 ssl;
7 年 2 个月 以前
皓哥,您好,我是用Apache搭建的,按照官网上教程配置完成之后,apache服务无法打开。重装、试了网上的其他一些教程也不行,请问您可以给我一些建议吗?
7 年 2 个月 以前
哎呀,抱歉啊。我也没有在 Apache 服务器上试过配置 SSL 证书。
7 年 2 个月 以前
下载申请好的阿里云证书的时候,会让您选择 Web 服务器,可以是 NGINX ,也可以是 Apache,选择 Apache 以后,有个教程。再仔细地按这个教程试试看。
7 年 2 个月 以前
好的,我再试试,谢谢啦
7 年 2 个月 以前
你好博主:
我这边也是做了HTTPS,但是出了点问题:我的站点是https://www.alufoil.cn,现在http的www和顶级域名都能301到这里,https://alufoil.cn这个不管怎么做都跳不过去,状态码是200,请教博主这是https证书的问题吗?web.config也做了正则,但跳不过去
7 年 1个月 以前
刚才在浏览器上试了一下您的网站,没有发现问题呀。
7 年 1个月 以前
https://alufoil.cn/不会跳到https://www.alufoil.cn/,这可是严重分权
7 年 1个月 以前
哦 ~ 您考虑这个贴子:https://talk.ninghao.net/t/nginx-www-www/4966/2
7 年 1个月 以前
谢谢博主的耐心回复!不过我的是IIS的服务器,有好的301的正则表达式吗?
7 年 1个月 以前
哎呀,IIS 不太了解。不过这种跳转应该用不到正则。
7 年 1个月 以前
找到个贴子:https://stackoverflow.com/questions/17714732/web-config-redirect-non-www...
7 年 1个月 以前
谢谢博主!这个可真是解决的我的问题。源码返回是303,做了一点修改,已经正常返回301了!
7 年 1个月 以前
别客气 :)
7 年 1个月 以前
您好,我现在的问题是,我的服务器上有多个网站应该怎么配置呢
7 年 2 周 以前
要为每个网站申请 ssl 证书。
7 年 2 周 以前
您好,我和您申请的是同样的证书,我是服务器是apahce,在微信支付回调的时候https无法回调,而http是可以的,不知道您有没有遇到过此问题,希望您点播一下!
7 年 1 周 以前
没有遇到这样的情况。不过我觉得应该跟您配置的 https 没有关系,而是网站本身的问题,有可能您在微信支持功能里面直接用了 http 协议。
7 年 1 周 以前
我也在开发微信支付回调,但是我的apache 崩了,大佬,指点一下呗
6 年 3 个月 以前
考虑换 Nginx 吧。
6 年 3 个月 以前
多谢,基本上已经成功了。
6 年 9 个月 以前
博主,你好!
有点事情不太了解:
1. 这个证书如果到期后,是能自动免费续,还是说要重新申请一个?
2. 如果能免费续的话,是不是也需要重新下载证书更新服务器呢?
6 年 4 个月 以前
阿里云的免费 SSL 证书,有效期是一年,到期以后必须手工重新申请新的证书,并且下载证书,更新服务器。
6 年 4 个月 以前
为什么我的阿里ssl,配置好了以后一更换网站路径服务器就崩了,apache
6 年 3 个月 以前
我觉得这个应该跟 ssl 没啥关系。
6 年 3 个月 以前
博主好,网站挺漂亮啊,用什么搭的呀?还有方便给看下https://www.houzz.com/photo/109048974-mano-kitchen-scandinavian-kitchen-...这个图片上的标签效果是怎么实现的吗?
6 年 4 周 以前
用 Drupal 搭建的。
6 年 4 周 以前
。。。您这是秒回啊,帮忙给看看那个效果是咋实现的,这有没有这方面的课程
6 年 4 周 以前
页面上的交互功能,可以了解一下 JavaScript 语言,再了解一些前端框架就行了。简单点的可以使用 jQuery 也行。
6 年 4 周 以前
您好 我想在内网用https,我用ntbind做了内网的DNS服务器,然后做了自签名的CA证书,本地安装证书后,https连接变成安全的了,但是Android上安装证书后 https仍然是不安全的。 我可否申请阿里云的SSL证书呢。我现在网站在开发域名也还没买。
6 年 2 周 以前
可以试试看。
6 年 2 周 以前
我申请阿里的证书 必须先买个域名吗 我申请证书的时候域名解析记录那有问题
6 年 2 周 以前
可以买一个域名,然后再备一个案,再去申请一个证书。您是打算在内网使用吗?
6 年 2 周 以前
是的 目前刚开始开发 开发完之后才考虑上云
6 年 2 周 以前
嗯,那就等开发之后再去申请一个吧。
6 年 2 周 以前