利用宝塔面板实现自动续签 SSL 证书

本贴最后更新于 1703 天前,其中的信息可能已经时过境迁

搭建好了博客之后,虽然实现了 docker 容器配合 GitHub Actions 的自动化部署,但是一直用的是 http 网络,另一方面, 自从 17 年开始,Chrome 浏览器中回对非安全性的链接标记出来,显示为"不安全的链接", 这就使得网站非常的不专业, 还会受到一些限制, 为了网站的安全性, 那就动手吧!

申请证书

目前,申请 ssl 证书的途径也是比较多的,我这里以 Let's Encrypt 为例,并且结合宝塔面板作为辅助.

为什么要使用宝塔面板?

  1. 这个工具对于新手来说是比较友好的,可视化的工具比枯燥的命令行看起来更舒服些
  2. 对于免费的 ssl 证书,通常情况下其有效期比较短,宝塔面板支持自动续签功能, 不用担心 ssl 证书过期.

宝塔面板的安装:

Linux 面板 7.1.0 安装命令:

Centos 安装命令:

试验性 Centos/Ubuntu/Debian 安装命令支持,注意使用 root 权限执行此命令

curl -sSO http://download.bt.cn/install/new_install.sh && bash new_install.sh

Ubuntu/Deepin 安装命令:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

Debian 安装命令:

wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh

Fedora 安装命令:

wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

安装完成!

添加站点

image.png

输入你的域名,添加完成之后在这里就可以看到了.

我这里把站点停掉了,因为我用 docker 部署的, 我把 NGINX 的反向代理直接指向 docker,所以添加网站的时候这个目录可以不用放静态资源.这里我用到的只是这个网站设置里面的网站管理工具.

SSL 证书管理

管理-SSL,可以看到有两种类型的证书可以申请:宝塔 SSL 和 Let's Encrypt.切换到 Let's Encrypt 之后按照提示去申请,在面板上已经写得很清楚了,按照说明到域名解析服务器那里添加两条记录:

image.png

按照制定的域名解析操作完成之后,点击验证, 通过之后证书就已经申请成功了.

申请好证书之后的文件,面板会将其放在/www/server/panel/vhost/cert/www.mfcookie.cf 该目录下,有两个文件

image.png

这两个文件就是一会儿要在 NGINX 配置文件里用到的.

配置 NGINX

下面去修改 NGINX 配置使证书生效.附上我的 NGINX 配置:

upstream backend {
	server 127.0.0.1:8082 max_fails=3 fail_timeout=30s;
}
server {
	# 最新写法,ssl on 的写法已经不推荐了!
	listen 443 ssl;
	server_name mfcookie.cf www.mfcookie.cf;
	# 证书相关,https新增
	ssl_certificate /www/server/panel/vhost/cert/www.mfcookie.cf/fullchain.pem;
	ssl_certificate_key /www/server/panel/vhost/cert/www.mfcookie.cf/privkey.pem;
	ssl_session_timeout 5m;

	access_log  /www/wwwlogs/www.mfcookie.cf.log;
	location / {
		proxy_pass http://backend$request_uri;
		proxy_set_header Host $host:$server_port;
		proxy_set_header X-Real-IP  $remote_addr;
		proxy_set_header http_x_forwarded_for $remote_addr;
		client_max_body_size 10m;
	}
}
server {
	# http跳转到https,这样就只存在https的博客了
	listen 80;
	server_name mfcookie.cf www.mfcookie.cf;
	rewrite ^(.*)$	https://$host$1	permanent;
}

配置完 NGINX 之后重载 NGINX 配置,这样就可以使用 HTTPS 访问网站了.

调整 docker-compose 文件

由于我使用的 docker 部署,还需要调整一下 docker-compose.yml 文件.完整的 docker-compose 文件在这篇文章中有过讲述,这里只需修改最后一行为 https 即可:

--listen_port=8082 --server_scheme=https --server_host=www.mfcookie.cf --server_port=

验证

下面就是见证奇迹的时刻了!

image.png

没错,他变成了一把性感的小锁! 连接是安全的!

点开看一下证书有效期:

image.png

马上要过期了! 怎么办! 不用管! 宝塔面板来解决!

自动续签

此时宝塔面板中关于网站的 SSl 是这样的:

image.png

已部署成功, 将在距离到期一个月内尝试自动续签!

好的!完美!

  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 431 关注
  • HTTPS
    99 引用 • 274 回帖 • 3 关注
  • 宝塔

    天王盖地虎,宝塔镇河妖。

    26 引用 • 76 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone9891 1

    宝塔是个好东西,改变了我很多。。。

    如果没有宝塔,我现在 Linux 操作水平也不至于这么烂。。。

    2 回复
  • 其他回帖
  • hmfcookie
    作者

    对于个人素质提升来说的话,我也推荐命令,当然在教程里面用面板还是无可厚非,毕竟看教程的也有好多新手。(一看你就是个被面板坑怕了的选手 😳 )

  • johnsonxiaoyu

    笑死了

  • 如果你以后不打算熟悉 Linux 命令,但是现在又要用,我觉得用这个好,如果你以后打算熟悉 Linux,我觉得最好还是一行一行命令搜来了敲着玩。。

    1 回复
  • 查看全部回帖