博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10分钟免费开启全站https
阅读量:6986 次
发布时间:2019-06-27

本文共 4863 字,大约阅读时间需要 16 分钟。


title: 10分钟开启全站https date: 2018-05-25 16:03:31 tags:

  • https
  • ubuntu

持续了1个多月的备案,今天收到短信终于下来了。

上篇水文,大概的记录了作为前端利用gitlab.com利用gitlab-ci开启CI自动部署。。这篇文章就要开始记录下我如何开启https。

什么是https?

https 是什么,不是本文的重点,直接跳过,https 的好处在这里也不仔细讲。

什么是 Let’s Encrypt?

部署 https 网站的时候需要证书,证书由 CA 机构签发,大部分传统 CA 机构签发证书是需要收费的,这不利于推动 https 协议的使用。Let’s Encrypt 也是一个 CA 机构,但这个 CA 机构是免费的!!!也就是说签发证书不需要任何费用。

什么是全站https,也就是通配符证书?

域名通配符证书类似 DNS 解析的泛域名概念,通配符证书就是证书中可以包含一个通配符。主域名签发的通配符证书可以在所有子域名中使用,比如 .example.com、bbs.example.com、bbs.example.com。 2018 年 3 月 14 日,Let’s Encrypt 对外宣布 ACME v2 已正式支持通配符证书。这就意外味着用户可以在 Let’s Encrypt 上免费申请支持通配符的 SSL 证书。以前配置子域名也是需要每个域名单独的申请证书的,意思是现在可以直接用*.example.com这个证书,让全站实现https。

下面本文就简单的记录了我开启全站https的步骤,10分钟就能搞定,首先从blog子域名开始。

开始配置

准备工作

1. 一个顶级域名:peiqixin.com  # 我这里用的是2. 一台自己的云服务器 # 我这里用的是我的那个小水管,之前在腾讯云撸的羊毛,6年360块钱的服务器,我这里服务器的系统用的是ubuntu复制代码

下面的所有操作都是在你的服务器上面,(我的服务器系统是ubuntu 16.04),其他的系统的操作也差不多。

添加一个blog域名解析

下载Nginx

安装 nginx 。如果你已经安装可以跳过这步。

sudo apt-get updatesudo apt-get install nginx复制代码

如果不会nginx的基本操作和基本配置,建议还是先去了解一下 nginx 的基本配置,比如如何的开启一个web服务器,nginx的基本操作和编写配置(不是必须)。

下载certbot客户端

sudo add-apt-repository ppa:certbot/certbotsudo apt-get updatesudo apt-get install python-certbot-nginx复制代码

安装的时候一路 enter 就完事儿了。

获取 Let’s Encrypt certificate

cerbot 提供 nginx 配置以帮助我们重新配置我们以前的 nginx 配置,以便我们可以使用我们即将获得的 SSL 证书。

## 我的域名是peiqixin.com。这里要换成你要配置的域名sudo certbot --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns  --installer nginx -d *.peiqixin.com -d peiqixin.com复制代码

然后又是一路的确定选择确定就可以了。

但是请注意这一步,就暂时不要继续enter了

请把这段token复制下来。 打开你的域名提供商,就是你之前买域名的地方。添加一个域名解析。

记录选择 选择 TXT 主机记录填入 _acme-challenge 记录值就填入刚才你保存下来的token

点击保存之后,certbot客户端会去确定你是否在正确的添加了解析。

如果正确的添加了解析。 接下来

Which server blocks would you like to modify?-------------------------------------------------------------------------------1: File: /etc/nginx/sites-enabled/defaultAddresses: [::]:80 default_server, 80 default_serverNames: _HTTPS: No...-------------------------------------------------------------------------------Select the appropriate numbers separated by commas and/or spaces, or leave inputblank to select all options shown (Enter 'c' to cancel): 复制代码

将呈现nginx配置中的服务器块列表,供您选择要将证书部署到的服务器块。 反正我用不上,这里选择cancel,输入c,enter继续。

接下来

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.-------------------------------------------------------------------------------1: No redirect - Make no further changes to the webserver configuration.2: Redirect - Make all requests redirect to secure HTTPS access. Choose this fornew sites, or if you're confident your site works on HTTPS. You can undo thischange by editing your web server's configuration.复制代码

这一步就是让你选择是否将http流量重定向到建议的https。既然是全站https,所有的访问都应该走https,选择2,enter。提供与前一阶段相同的列表,输入c,按enter继续。

接下来,当你看到下面的一段就表明你已经配置好了。

请把

/etc/letsencrypt/live/peiqixin.com/fullchain.pem/etc/letsencrypt/live/peiqixin.com/privkey.pem复制代码

这2个地址记下来

配置nginx

sudo nginx -t 复制代码

找到你的nginx配置文件的地址

sudo mkdir conf.d #创建一个配置nginx的目录,不可能把所有的配置写在一个文件里面,以后也不好维护复制代码

再在nginx的默认配置文件nginx.conf的http模块里面添加

include /etc/nginx/conf.d/*.conf;  #引入所有的配置文件复制代码

在conf.d文件夹里面创建一个index.conf,创建主配置文件负责监听80端口并转发请求。

server {    listen 80;    server_name peiqixin.com www.peiqixin.com blog.peiqixin.com;    rewrite ^(.*) https://$host permanent;}复制代码

创建https配置文件。创建各域名配置文件监听443端口(可以按域名分开,也可以写一个文件里,我为了方便写在一个文件里)

server {        listen       443;        server_name  peiqixin.com  www.peiqixin.com;        ssl on;        ssl_certificate      /etc/letsencrypt/live/peiqixin.com/fullchain.pem; ## 这个就是你配置certbot最后一步要你记录下来的地址        ssl_certificate_key  /etc/letsencrypt/live/peiqixin.com/privkey.pem;                ssl_session_cache    shared:SSL:10m;        ssl_session_timeout  5m;        ssl_ciphers  HIGH:!aNULL:!MD5;        ssl_prefer_server_ciphers  on;        location / {            root /home/ubuntu/blog;  ##这里我用hexo博客生成器生成的静态html,js,css都放在了这个文件            index index.html index.htm;        }    } server {        listen       443;        server_name  blog.peiqixin.com;        ssl on;        ssl_certificate      /etc/letsencrypt/live/peiqixin.com/fullchain.pem;        ssl_certificate_key  /etc/letsencrypt/live/peiqixin.com/privkey.pem;                ssl_session_cache    shared:SSL:10m;        ssl_session_timeout  5m;        ssl_ciphers  HIGH:!aNULL:!MD5;        ssl_prefer_server_ciphers  on;        location / {            root /home/ubuntu/blog;            index index.html index.htm;        }    }复制代码

退出保存。检测一下nginx的配置是否有语法错误

sudo nginx -t复制代码

重启nginx

访问blog.peiqixin.com,就会看见

再访问
peiqixin.com

都是自动的从http跳转到https。

接下来想要添加一个api.peiqixin.com域名为https。重复上面的第一步和最后一步,然后就可以在api.peiqixin.com域名旁边看到小绿锁。

更新证书

因为这个https证书是有3个月的期限的,差不多快到快要到3个月的时候,letsencrypt会发邮件给你,告诉你的证书快要过期。这个时候你就可以自己重新安排下证书了。 (你也可以写个定时脚本,但是那个不是本文的关注的地方,而且我也没写)

certbot renew// 上面的指令我跑不成功,就换成下面的这条,等于说是重新的申请下证书,不用改配置,30秒就选择完了// sudo certbot --force-renew  复制代码

参考资料

转载地址:http://hnhpl.baihongyu.com/

你可能感兴趣的文章
1303: [CQOI2009]中位数图
查看>>
在数组的开头插入键值对
查看>>
LTTng
查看>>
常用模块
查看>>
HTTPS = HTTP + SSL
查看>>
Copy修饰的NSArray
查看>>
eclipse新建web项目
查看>>
gnuplot
查看>>
GraphQL(三):GraphQL集成SpringBoot原理
查看>>
Balloons
查看>>
posix消息队列(1)
查看>>
using for jekyll
查看>>
Jenkins的授权和访问控制
查看>>
C/C++里的const(1)
查看>>
Expert 诊断优化系列-------------针对重点语句调索引
查看>>
解决Run As -> Java Application不能运行问题
查看>>
JSP 注释的详解及简单实例
查看>>
c:\Windows\System32\drivers\etc\hosts的作用
查看>>
2.Xml与多个对象的映射(聚合或组合)及注意事项
查看>>
java报表开发之报表总述
查看>>