网站添加免费的 https 证书

简述

这里使用 Let’s Encrypt 的免费证书

  1. certbot 官网
  2. 在页面上选择一下你用的 Web 服务器和操作系统。比如,我选的 Nginx 和 Centos 7
  3. 根据页面提示操作,以下为详细步骤。

详细步骤

  1. 进入官网后下方会出现选择服务器和系统版本界面,选完后会自动生成操作步骤

file

file

  1. 在安装 certbot 之前需要先安装 snapd , 点击 install snapd 进入

file

  1. 这里选择 CentOS 点击进入 安装 snapd 教程 ,命令汇总下方
# 安装 epel
sudo yum install epel-release

# 安装 snapd
sudo yum install snapd

# 设置系统自启 snap socket
sudo systemctl enable --now snapd.socket

# 设置软连接
sudo ln -s /var/lib/snapd/snap /snap
  1. 更新 snap core
sudo snap install core
sudo snap refresh core
  1. 安装 certbot
sudo snap install --classic certbot
  1. 创建执行命令
sudo ln -s /snap/bin/certbot /usr/bin/certbot
  1. 这里提供两种方式
# 1.获取并安装证书:运行此命令以获取证书,并让Certbot自动编辑的nginx配置。
sudo certbot --nginx

# 2.只是获得证书,手动更改nginx配置
sudo certbot certonly --nginx

安装的时候有报错:

The nginx plugin is not working; there may be problems with your existing configuration.
The error was: NoInstallationError("Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.")

是因为没有将 nginx 放到环境变量中,需要设置 nginx 软连接:

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
ln -s /usr/local/nginx/conf/ /etc/nginx

当使用 which nginx 时,报错:
执行 which nginx 显示如下
/usr/bin/which: no nginx in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
说明在 (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin) 这些路径下都没有nginx的可执行文件,所以执行不了which,解决办法也可以采取上面的解决方案

这里使用第一种方式
sudo certbot --nginx
提示输入邮箱,回车后会出现两个协议:
1.是否同意他们的服务协议,选择 “Y”。
2.是否共享邮箱给他们提供推广等,选择 “N”。

certbot 会自动检查到 nginx.conf 下的配置,把所有的虚拟站点都列出来,然后选择需要开启 https 的站点。输入列表编号(用空格分开),然后,certbot 就下载证书并更新 nginx.conf 了。

打开 nginx.conf 文件,发现已经被添加了代码

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/fushengyicheng.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/fushengyicheng.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    server {
    if ($host = fushengyicheng.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

        listen       80;
        server_name  fushengyicheng.com;
    return 404; # managed by Certbot

}
  1. 测试自动续订

Let’s Encrypt 的证书90天过期,这里 certbot 会提供续订命令,这里验证是否生效,只要看到有文件即可,无需修改。

sudo certbot renew --dry-run

file

设置上自动化的更新脚本,使用 crontab 增加定时任务,每个月更新一下,使用 crontab -e 命令加入如下的定时作业

crontab -e

0 0 1 * * /usr/bin/certbot renew --force-renewal
5 0 1 * * /usr/sbin/service nginx restart

crontab 中有六个字段,其含义如下:
第1个字段:分钟 (0-59)
第2个字段:小时 (0-23)
第3个字段:日期 (1-31)
第4个字段:月份 (1-12 [12 代表 December])
第5个字段:一周当中的某天 (0-7 [7 或 0 代表星期天])
/path/to/command – 计划执行的脚本或命令的名称

以上 https 证书添加完毕

配置 HTTP2

HTTP2 具有更快的 HTTPS 传输性能 HTTPS、SPDY 和 HTTP/2 的简单性能比较

配置 HTTP2 要求 nginx 版本要大于 1.9.5

开启 HTTP/2 其实很简单,只需要在 nginx.conflisten 443 ssl; 后面加上 http2 就好了

    listen 443 ssl http2; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/fushengyicheng.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/fushengyicheng.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

然后重新加载 Nginx 就好了

nginx -s reload

如果报错

nginx: [emerg] the "http2" parameter requires ngx_http_v2_module in /usr/local/nginx/conf/nginx.conf:138

是因为 nginx 开启 HTTP/2 需要安装 ngx_http_v2_module 才可以开启,而 nginx 默认是没有安装该模块,需要我们手动安装一下,进入原来的 nginx 源码目录,如果找不到,可以去下载最新的 源码并进入

配置新增 nginx 的 http2 模块

ngx_http_v2_module模块

# 若找不到之前的源码目录
wget http://nginx.org/download/nginx-1.17.10.tar.gz
tar zxvf nginx-1.17.10.tar.gz
cd nginx-1.17.10
ls
# 除了nginx -V的输入信息原有的模块之外,新增--with-http_v2_module
./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-http_v2_module

配置新增ngx_http_v2_module模块
在配置新增模块结束后,执行make重新编译

make

make好了之后会在源码目录 nginx-1.17.10 下的 objs 目录产生 nginx 的二进制文件

为了避免出现异常,先备份原来的 nginx 文件

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old20221127

拷贝新编译的二进制覆盖原nginx二进制

nginx -s stop
cp objs/nginx /usr/local/nginx/sbin/nginx

源码目录根目录下,执行更新安装命令

/usr/local/nginx/sbin/nginx
make upgrade

查看信息

nginx -V

nginx version: nginx/1.17.10
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-http_v2_module

完成以上操作,则增加了 http2

现在可以在 nginx.conf 中加入配置

listen 443 ssl http2;

nginx -s reload 重启nginx

打开浏览器查看,成功生效

file

参考文章
如何免费的让网站启用HTTPS

相关文章

转载请注明: 转载自 浮生一程
本文链接地址 网站添加免费的 https 证书
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇