为你的网站开启HTTPS访问
侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计收到 11 条评论

为你的网站开启HTTPS访问

坑了个飞
2023-11-06 / 0 评论 / 13 阅读 / 正在检测是否收录...

通过 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 访问以下网站检验一下结果吧

常见问题

0

评论 (0)

取消