通过 acme.sh 脚本来申请免费 Let's Encrypt
的 ssl 证书
准备工作
先把 域名的 dns 解析到服务器上
安装 acme.sh
curl https://get.acme.sh | sh
添加软链接, 方便全局使用 acme.sh 命令
ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
切换签发机构 为 Let's Encrypt
acme.sh --set-default-ca --server letsencrypt
申请证书
注意把域名替换成你自己的域名
acme.sh --issue -d 你的域名 -k ec-256 --webroot /var/www/typecho
- /var/www/typecho : 就是你网站的根目录
安装证书到 nginx
先创建用来存放证书的目录
mkdir /etc/nginx/cert
安装证书到指定目录
acme.sh --install-cert -d 你的域名 --ecc --key-file /etc/nginx/cert/server.key --fullchain-file /etc/nginx/cert/server.crt --reloadcmd "systemctl force-reload nginx"
- --key-file : 将密钥文件文件复制到哪去
- --fullchain-file : 将全链证书文件复制到哪去
- --reloadcmd : 重新加载服务
配置 nginx 的证书访问
创建 443 访问配置文件
touch /etc/nginx/conf.d/typecho_443.conf
编辑文件, 复制以下配置到文件中
server {
listen 443 ssl;
server_name www.diggingfly.com;
ssl_certificate /etc/nginx/cert/server.crt;
ssl_certificate_key /etc/nginx/cert/server.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
root /var/www/typecho;
index index.html index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params.modified;
}
}
开启强制 HTTPS 访问
访问 http 自动跳转到 https
# 编辑 80 端口的配置文件
nano /etc/nginx/conf.d/typecho.conf
用以下内容替换原文件内容
server {
listen 80;
location / {
rewrite ^(.*)$ https://$host$1 permanent;
}
}
重启 nginx 服务
systemctl restart nginx
更新 typecho 里的站点地址
访问 typecho 的后台
把 地址改成自己的 https 路径
最后
用 https 访问以下网站检验一下结果吧
常见问题
# 查看定时任务
crontab -l
如下所示
{/collapse-item}
评论 (0)