服务器https证书配置

2026-04-11 12:441阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

前置:需要域名托管到 cloudflare

今天下午终于申请到了oracle服务器,所以马上配置一下域名和https的证书,刚好写个文章记录下

安装 acme.sh

curl https://get.acme.sh | sh source ~/.bashrc

这个时候会自动在根目录下生成 .acme.sh文件夹
以及自动安装创建crontab任务

去 cloudflare 创建token

这个主要是为了在生成证书的时候,acme.sh去检查域名的所有权,只有你有权限访问这个域名才会生成证书,程序会自动创建DNS记录检查

Cloudflare API Token 生成步骤

  1. 进入创建页面

访问 API Tokens 页面

  1. 创建自定义令牌

点击 “Create Token” → 选择 “Create Custom Token”

  1. 配置令牌
  • Token Name: 给令牌起个描述性名称(如 “DNS Management”)
  • Permissions: 选择所需权限
    • 例如:Account → Account Analytics → Read
    • 或 Zone → DNS → Edit
  • Account Resources: 选择要作用域的账户(可选)
  • Client IP Filtering: 可选,限制 IP 访问
  • TTL: 设置过期时间(可选)
  1. 确认并创建
  • 点击 “Continue to summary” 查看详情
  • 点击 “Create Token”
  1. 保存令牌

重要:令牌只显示一次,立即复制保存到安全位置

把生成的 cloudflare token 保存到 .bashrc

export CF_Token="xxx" export CF_Account_ID="xxx"

修改acme.sh使用letsencrypt

acme.sh 模式使用的不是这个,另外一个还要邮箱什么配置,太麻烦,我通常直接使用letsencrypt

acme.sh --set-default-ca --server letsencrypt

申请证书和安装

acme.sh --issue \ --dns dns_cf \ -d *.domain.com \ -d domain.com

申请之后进行安装

acme.sh --install-cert -d *.domain.com \ --key-file /[path]/domain.com.key \ --fullchain-file /[path]/domain.com.pem \

你可以把你的证书放到指定目录

如果直接本机安装的nginx,可以直接放到nginx目录 /etc/nginx/ssl

我使用的是docker,所以在nginx的docker-compose.yml同级目录创建一个 ssl 目录
然后把 [path] 替换成这个路径即可

docker 配置

version: "3.9" services: nginx: image: nginx:latest container_name: nginx-proxy ports: - "80:80" - "443:443" volumes: - ./conf.d:/etc/nginx/conf.d # 配置目录 - ./ssl:/etc/nginx/ssl # 证书目录 restart: always

下面就可以在conf.d目录下创建你的配置,比如 openlist.conf

# OpenList server { listen 80; listen [::]:80; server_name openlist.domain.com; return 301 https://$host$request_uri; } # HTTPS 主配置 server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name openlist.domain.com; client_max_body_size 100m; ssl_certificate /etc/nginx/ssl/domain.com.pem; ssl_certificate_key /etc/nginx/ssl/domain.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; location / { proxy_pass http://172.17.0.1:5244; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

这样就大功告成

不过要注意 openlist.conf的 proxy_pass代理路径,要配置好
这个 http://172.17.0.1 路径可以访问到主机开放的端口,但是没找到参考文档,我在服务器上可以正常使用。

如果你的服务都是docker的话,可以创建一个公共网络,这样就不用担心路径错误

网友解答:
--【壹】--:

被打了最多不就服务器炸了吗,cdn的话才容易被刷爆吧


--【贰】--:

感谢分享


--【叁】--:

我直接用cf的证书,其他啥都不操心


--【肆】--:

好像不会过期的,我记得acme会自动创建一个crontab任务,会定期续约


--【伍】--:

简单速成用npm可视化界面很好用


--【陆】--:

3个月过期, 顺便把续签也更新了吧~~


--【柒】--:

cf的证书好像要走小黄云,我的服务器直连比较快,所以我就关了


--【捌】--:

你不配置CDN之类的边缘服务吗?
被打了怎么办?关机还是买房还债


--【玖】--:

感谢分享


--【拾】--:

佬怎么搞得这么复杂…
在配好DNS之后 用certbot --nginx -d 域名 不就好了吗


--【拾壹】--:

主要是多了配置cftoken,他会自动创建dns记录校验,还有一些docker相关的,我一般部署nginx放在docker里,所以要注意docker绑定的路径和已经外部地址的问题


--【拾贰】--:

太复杂了
CF可以直接生成15年的通配证书


--【拾叁】--:

我直接用caddy了,都不用考虑证书的事情


--【拾肆】--:

记录一下 以后可以用


--【拾伍】--:

建议直接研究一下caddy……默认就带https的

标签:vps甲骨文
问题描述:

前置:需要域名托管到 cloudflare

今天下午终于申请到了oracle服务器,所以马上配置一下域名和https的证书,刚好写个文章记录下

安装 acme.sh

curl https://get.acme.sh | sh source ~/.bashrc

这个时候会自动在根目录下生成 .acme.sh文件夹
以及自动安装创建crontab任务

去 cloudflare 创建token

这个主要是为了在生成证书的时候,acme.sh去检查域名的所有权,只有你有权限访问这个域名才会生成证书,程序会自动创建DNS记录检查

Cloudflare API Token 生成步骤

  1. 进入创建页面

访问 API Tokens 页面

  1. 创建自定义令牌

点击 “Create Token” → 选择 “Create Custom Token”

  1. 配置令牌
  • Token Name: 给令牌起个描述性名称(如 “DNS Management”)
  • Permissions: 选择所需权限
    • 例如:Account → Account Analytics → Read
    • 或 Zone → DNS → Edit
  • Account Resources: 选择要作用域的账户(可选)
  • Client IP Filtering: 可选,限制 IP 访问
  • TTL: 设置过期时间(可选)
  1. 确认并创建
  • 点击 “Continue to summary” 查看详情
  • 点击 “Create Token”
  1. 保存令牌

重要:令牌只显示一次,立即复制保存到安全位置

把生成的 cloudflare token 保存到 .bashrc

export CF_Token="xxx" export CF_Account_ID="xxx"

修改acme.sh使用letsencrypt

acme.sh 模式使用的不是这个,另外一个还要邮箱什么配置,太麻烦,我通常直接使用letsencrypt

acme.sh --set-default-ca --server letsencrypt

申请证书和安装

acme.sh --issue \ --dns dns_cf \ -d *.domain.com \ -d domain.com

申请之后进行安装

acme.sh --install-cert -d *.domain.com \ --key-file /[path]/domain.com.key \ --fullchain-file /[path]/domain.com.pem \

你可以把你的证书放到指定目录

如果直接本机安装的nginx,可以直接放到nginx目录 /etc/nginx/ssl

我使用的是docker,所以在nginx的docker-compose.yml同级目录创建一个 ssl 目录
然后把 [path] 替换成这个路径即可

docker 配置

version: "3.9" services: nginx: image: nginx:latest container_name: nginx-proxy ports: - "80:80" - "443:443" volumes: - ./conf.d:/etc/nginx/conf.d # 配置目录 - ./ssl:/etc/nginx/ssl # 证书目录 restart: always

下面就可以在conf.d目录下创建你的配置,比如 openlist.conf

# OpenList server { listen 80; listen [::]:80; server_name openlist.domain.com; return 301 https://$host$request_uri; } # HTTPS 主配置 server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name openlist.domain.com; client_max_body_size 100m; ssl_certificate /etc/nginx/ssl/domain.com.pem; ssl_certificate_key /etc/nginx/ssl/domain.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; location / { proxy_pass http://172.17.0.1:5244; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

这样就大功告成

不过要注意 openlist.conf的 proxy_pass代理路径,要配置好
这个 http://172.17.0.1 路径可以访问到主机开放的端口,但是没找到参考文档,我在服务器上可以正常使用。

如果你的服务都是docker的话,可以创建一个公共网络,这样就不用担心路径错误

网友解答:
--【壹】--:

被打了最多不就服务器炸了吗,cdn的话才容易被刷爆吧


--【贰】--:

感谢分享


--【叁】--:

我直接用cf的证书,其他啥都不操心


--【肆】--:

好像不会过期的,我记得acme会自动创建一个crontab任务,会定期续约


--【伍】--:

简单速成用npm可视化界面很好用


--【陆】--:

3个月过期, 顺便把续签也更新了吧~~


--【柒】--:

cf的证书好像要走小黄云,我的服务器直连比较快,所以我就关了


--【捌】--:

你不配置CDN之类的边缘服务吗?
被打了怎么办?关机还是买房还债


--【玖】--:

感谢分享


--【拾】--:

佬怎么搞得这么复杂…
在配好DNS之后 用certbot --nginx -d 域名 不就好了吗


--【拾壹】--:

主要是多了配置cftoken,他会自动创建dns记录校验,还有一些docker相关的,我一般部署nginx放在docker里,所以要注意docker绑定的路径和已经外部地址的问题


--【拾贰】--:

太复杂了
CF可以直接生成15年的通配证书


--【拾叁】--:

我直接用caddy了,都不用考虑证书的事情


--【拾肆】--:

记录一下 以后可以用


--【拾伍】--:

建议直接研究一下caddy……默认就带https的

标签:vps甲骨文