最近在研究微信的小程序,因为接口这些要求HTTPS,加上这个服务器又是刚买的,所以没有配置。现在写篇文章记录一下。
还不了解HTTPS的同学可以看看阮一峰老师写的SSL/TLS协议运行机制的概述

1.获取证书

开始

首先我们打开Let’s Encrypt的官方网站,Let’s Encrypt 中文
就会看到下图,有两个选项,一个是拥有命令行访问权限的,指能通过ssh访问的,另一个是没有命令行访问权限的,指的可能是那些一键式建站的服务商,因为不了解,就不赘述了。
image.png

安装 Certbot ACME 客户端

点击页面上的访问 Certbot 官网
image.png
然后就会看到下面的页面,在红色的框里选择自己的网站服务器和系统,
我的是nginx和centos7,这里就nginx和centos7作为例子。
image.png
接下来就要安装snapd了,这是一个linux上的一个包管理器,啥是snapd.
我的服务器是centos7,直接执行以下命令,如果你的和我不一样,参考如何安装snapd.

  1. 安装EPEL存储库
sudo yum install epel-release
  1. 安装snapd
sudo yum install snapd

看到类似如下输出表示安装成功
image.png
3.启用管理主snap通信套接字的systemd单元

sudo systemctl enable --now snapd.socket

看到类似如下的输出就算成功
image.png
4.启用经典快照支持,输入以下命令以创建之间的符号链接

sudo ln -s /var/lib/snapd/snap /snap

这一步没有任何输出
到这,snapd就安装完成了

安装snapd core和开启自动更新

sudo snap install core; sudo snap refresh core

删除 certbot-auto 和任何 Certbot OS 包

如果您使用 OS 软件包管理器(如apt、dnf或 )安装了任何 Certbot 软件包 yum,则应在安装 Certbot snap 之前将其删除,以确保在运行命令时使用的certbot是 snap,而不是从您的 OS 软件包管理器安装。具体的命令做到这一点取决于您的操作系统,但常见的例子是sudo apt-get remove certbot,sudo dnf remove certbot或sudo yum remove certbot。如果您之前通过 certbot-auto 脚本使用过 Certbot,您还应该按照此处的说明删除其安装。
这个是文档的说明,要求删除之前的,因为我是第一次安装,所以跳过这个。

安装 Certbot

sudo snap install --classic certbot

看到类似如下的输出表示安装成功
image.png

准备 Certbot 命令

执行以下指令,确保certbot命令可以运行。

ln -s /snap/bin/certbot /usr/bin/certbot

选择 Certbot的运行方式

获取并安装您的证书...
这个命令是一键式的,运行后就可以自动编辑nginx配置文件,不需要自己的操作了,我选了了后者,只获得证书,自己编辑nginx配置文件

sudo certbot --nginx

或者,只需获得证书
这个是只获得证书,执行命令后获得证书pem文件

sudo certbot certonly --nginx

执行命令后会有三次询问
1.第一次是,输入邮箱(用于紧急续费及安全通知),我输入了,也可以输入c取消
image.png
2.第二次是,你必须同意注册到ACME服务器,如果选择no,就会取消,输入y或者yes继续
image.png
3.第三个是,问你是否愿意帮忙发展推广cerbot,这个看个人选择,我选择了y,推荐大家也选y
image.png
4.然后就会把你nginx的域名都给你列出来,问你要给那些域名配置ssl
image.png
这里输入域名的编号,或是空格选择全部,我选择了2,我博客的域名。
然后就会生成pem文件,
image.png

测试自动更新

sudo certbot renew --dry-run

看到如下输出表示成功
image.png

验证HTTPS是否生效

首先我们先编辑自己网站的conf文件
修改成下面的格式

server {
  listen 80;
  server_name 你的域名;
  rewrite ^/(.*) https://$server_name permanent;    #跳转到Https
}

server {
  listen       443 ssl;
  ssl_certificate        /etc/letsencrypt/live/你的域名/fullchain.pem;
  ssl_certificate_key    /etc/letsencrypt/live/你的域名/privkey.pem;
  ssl_trusted_certificate    /etc/letsencrypt/live/你的域名/chain.pem;
  ssl_session_timeout    5m;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
  ssl_prefer_server_ciphers   on;

  server_name 你的域名;
  # 配置http转发
  add_header Access-Control-Allow-Origin 
  https://$server_name;
  add_header Access-Control-Allow-Credentials true;

  location / {
	...
  }
}

然后执行,重载配置

nginx -s reload

就可以用https访问你的网站了,就可以看到小锁了
image.png

结束了

哈哈哈,写得不好见谅,欢迎指正。