🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余10个优惠名额) →

用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS

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 分钟左右,申请的证书就会审核通过。

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 版本的网页上。

订阅宁皓网,在线学习所有 Linux 与阿里云相关课程

HTTPS

评论

阿里云的ssl需要实名认证备案这些前提吗

不确定,不过这些应该都是基础的,不用担心。备案现在变得简单多了。

凡是国内的云服务商提供的 HTTPS 证书,都需要备案。

不错,正好用得上!

如果不是 阿里服务器 ,亚马逊服务器如何申请免费证书?

这个只需验证域名所有权,不用管服务器在哪。

SEO不清楚如何

SEO 应该不用担心,百度官方声明里提过,HTTPS 的页面更安全,所以排名会被优先考虑。

能出一个阿帕奇配置方法吗?我网站马上就要上线了,想直接用https

证书已经申请下来了

我没有在 Apache 上试过,在下载证书的时候,有个提示,让你选择 NGINX 或 Apache,在那个选择页面上,有一个配置教程。

请问,如果是在负载均衡SLB上使用需要额外做什么调整吗?

负载均衡有另一种配置的方法,你可以不必配置服务器,直接配置负载均衡,就是让负载均衡使用你申请的 SSL 证书。

有配置负载均衡的方法吗?

暂时先参考阿里云官方的文档吧。

好的 谢谢了~

别客气 :)

才刚学会建站,请问我用免费的空间,然后绑定的域名,怎么弄成https的呢,免费证书已经申请好了,手里做的有php的也有.net的网页,该怎么用证书呢,是本地修改?小白求教。。。谢谢您了

你可能不能自己控制,有可能是空间决定的你到底能不能用 SSL 证书。

用的空间的话,得看空间服务商有没有提供 SSL 或者说 HTTPS 的服务。一般不能自己配置。

皓哥,我按照上面的步骤配置了下,一直不生效,然后又按照阿里云给的操作配置了下 也不行。

仔细再检查一下,一定是哪里错了。证书的路径正常吗?有没有重启 NGINX? 再试试就能行了 :)

我反反复复查询了好几遍,两种方法都行不通,皓哥,会不会和阿里云的安全组或服务器环境有关呢?

我觉得不是。

行,我再试试。重新配置一下看看 ^_^

皓哥,找到原因了,我之前写到一块儿了,现在分别写到不同的 /etc/nginx/conf.d/conf 文件里就可以了
现在还有个问题:怎么把 http://kfzhengyu.com http://www.kfzhengyu.com https://kfzhengyu.com 重定向到https://www.kfzhengyu.com

参考文章:https://ninghao.net/blog/4488 ,最底下有关于 301 重定向的 NGINX 配置代码。

我记得你以前域名域名解析都在 DNSPOD上的,现在都转到阿里了吗?
这个免费证书不在买的域名或者不在阿里做的解析应该都可以用吧??

昨天刚刚发布了《HTTPS 与 HTTP2》https://ninghao.net/course/4539

为什么我的不行?

貌似我没有开启 SSL 443端口吧?

二级域名怎么用?是重新申请个证书还是怎么设置一下?
比如,现在 lekee.cc 已经可以用 https 现在有个 cdn.leeke.cc 这个域名也想用 Https 这个协议怎么办?

重新再为二级域名申请一个新的证书。

视频里301重定向的,http 定向 https
显示
将您重定向的次数过多

这个问题,是循环重定向了。把之前是 80 和 443 写在同一个 server 里面分开就好

王兄,对 HTTPS 这个视频补充下,比如大家以前都用WP DP 做的网站,域名都用http的,现在这些网站的域名要换成了 HTTPS 该怎么弄?
特别我官网用七牛的cdn 这个又该怎么办。。。一点小建议

嗯,我做了一个《HTTPS 与 HTTP2》 的视频,里面介绍了申请 SSL 证书,配置服务器使用 SSL 证书的方法。这样你的 WordPress 与 Drupal 网站就可以使用 HTTPS 访问了。https://ninghao.net/course/4539

其实,让网站使用 HTTPS,跟您用的网站系统没有关系,你只需要让你的网站服务器支持 HTTPS 就行了。正确的配置了 NGINX 服务器就可以了。

七牛 CDN 你应该需要单独到七牛那里去配置一下。因为这跟您自己的服务器没有关系。

这个我看了,你演示的页面应该只是 HTML,所以 ssl.ninghao.cc.conf Nginx 配置文件里没有关于 PHP 的配置

我想问下,对于已经被收录的其它页面,怎么做301跳转呢。

您指的是 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

我是这么写的,也能跳,但不知道对不对,您看可以吗,
server {
listen 80;
server_name www.wxxcx5.com wxxcx5.com;

#301
rewrite ^/(.*)$ https://www.wxxcx5.com/$1 permanent;

}

有人这样试了下,说成功了。配置:if ($host = www.ninghao.net) {
return 301 https://ninghao.net$request_uri;
}

需要测试,我也不能确定到底怎么样才行。因为环境都不太一样。

另外,我用了百度云加速的cnd,这个不用管吧,我只管配制我的nginx

在百度云上搜搜看,有没有相关的说明与配置文档吧。

请问绑定的那个域名必须是主域名吗?二级域名可以吗?

二级域名也可以,不过你在申请证书的时候,域名应该是二级域名。

恩恩 可以了^_^

:)

王老师 为什么我都配置好了访问不到配置好的域名呢?域名的记录值是阿里发给的 我发现我都没用到我的ip啊 这是怎么回事呢?

这个网站可以直接申请免费证书,方便很多:https://freessl.org

重定向还直接访问还是会报400:The plain HTTP request was sent to HTTPS port
百度了以下:
把 ssl on;删掉,
直接直接在listen 443后面加ssl即可如:
listen 443 ssl;

皓哥,您好,我是用Apache搭建的,按照官网上教程配置完成之后,apache服务无法打开。重装、试了网上的其他一些教程也不行,请问您可以给我一些建议吗?

哎呀,抱歉啊。我也没有在 Apache 服务器上试过配置 SSL 证书。

下载申请好的阿里云证书的时候,会让您选择 Web 服务器,可以是 NGINX ,也可以是 Apache,选择 Apache 以后,有个教程。再仔细地按这个教程试试看。

好的,我再试试,谢谢啦

你好博主:
我这边也是做了HTTPS,但是出了点问题:我的站点是https://www.alufoil.cn,现在http的www和顶级域名都能301到这里,https://alufoil.cn这个不管怎么做都跳不过去,状态码是200,请教博主这是https证书的问题吗?web.config也做了正则,但跳不过去

刚才在浏览器上试了一下您的网站,没有发现问题呀。

https://alufoil.cn/不会跳到https://www.alufoil.cn/,这可是严重分权

哦 ~ 您考虑这个贴子:https://talk.ninghao.net/t/nginx-www-www/4966/2

谢谢博主的耐心回复!不过我的是IIS的服务器,有好的301的正则表达式吗?

哎呀,IIS 不太了解。不过这种跳转应该用不到正则。

谢谢博主!这个可真是解决的我的问题。源码返回是303,做了一点修改,已经正常返回301了!

别客气 :)

您好,我现在的问题是,我的服务器上有多个网站应该怎么配置呢

要为每个网站申请 ssl 证书。

您好,我和您申请的是同样的证书,我是服务器是apahce,在微信支付回调的时候https无法回调,而http是可以的,不知道您有没有遇到过此问题,希望您点播一下!

没有遇到这样的情况。不过我觉得应该跟您配置的 https 没有关系,而是网站本身的问题,有可能您在微信支持功能里面直接用了 http 协议。

我也在开发微信支付回调,但是我的apache 崩了,大佬,指点一下呗

考虑换 Nginx 吧。

多谢,基本上已经成功了。

博主,你好!
有点事情不太了解:
1. 这个证书如果到期后,是能自动免费续,还是说要重新申请一个?
2. 如果能免费续的话,是不是也需要重新下载证书更新服务器呢?

阿里云的免费 SSL 证书,有效期是一年,到期以后必须手工重新申请新的证书,并且下载证书,更新服务器。

为什么我的阿里ssl,配置好了以后一更换网站路径服务器就崩了,apache

我觉得这个应该跟 ssl 没啥关系。

博主好,网站挺漂亮啊,用什么搭的呀?还有方便给看下https://www.houzz.com/photo/109048974-mano-kitchen-scandinavian-kitchen-...这个图片上的标签效果是怎么实现的吗?

用 Drupal 搭建的。

。。。您这是秒回啊,帮忙给看看那个效果是咋实现的,这有没有这方面的课程

页面上的交互功能,可以了解一下 JavaScript 语言,再了解一些前端框架就行了。简单点的可以使用 jQuery 也行。

您好 我想在内网用https,我用ntbind做了内网的DNS服务器,然后做了自签名的CA证书,本地安装证书后,https连接变成安全的了,但是Android上安装证书后 https仍然是不安全的。 我可否申请阿里云的SSL证书呢。我现在网站在开发域名也还没买。

可以试试看。

我申请阿里的证书 必须先买个域名吗 我申请证书的时候域名解析记录那有问题

可以买一个域名,然后再备一个案,再去申请一个证书。您是打算在内网使用吗?

是的 目前刚开始开发 开发完之后才考虑上云

嗯,那就等开发之后再去申请一个吧。

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点