linux 平台下使用 nginx 搭建一个 https web 服务器

背景

nginx 站点配置

  1. /etc/nginx/sites-available 下面创建一个配置文件,例如:xxx.com,里面填入配置信息,例如:
server {
listen 443 ssl;
server_name hello.xxx.com;
 
ssl_certificate /root/.acme.sh/xxx.com_ecc/fullchain.cer;
ssl_certificate_key /root/.acme.sh/xxx.com_ecc/xxx.com.key;
 
location / {
root /srv/hello.xxx.com;
index index.html;
}
}
  1. 执行命令 ln -s /etc/nginx/sites-available/xxx.com xxx.com ,在 /etc/nginx/sites-enabled 中创建一个软链接,表示开启该站点。

使用 acme.sh 申请 zoressl 证书

  1. 打开 https://zerossl.com/ 注册账号
  2. 执行 curl https://get.acme.sh | sh -s [email protected] 安装 acme.sh 脚本
  3. 执行 acme.sh --register-account -m [email protected] --server zerossl 关联 zerossl 账号
  4. 导出 cloudflare 的 token 和 email 到环境变量,acme.sh 需要用这两个变量来访问 cloudflare
  5. 执行 ~/.acme.sh/acme.sh --server zerossl --issue -d xxx.com --dns dns_cf 申请证书。如果需要申请泛域名证书,执行 ~/.acme.sh/acme.sh --server zerossl --issue -d xxx.com -d *.xxx.com --dns dns_cf
Your cert is in: /root/.acme.sh/xxx.com_ecc/xxx.com.cer
Your cert key is in: /root/.acme.sh/xxx.com_ecc/xxx.com.key
The intermediate CA cert is in: /root/.acme.sh/xxx.com_ecc/ca.cer
And the full chain certs is there: /root/.acme.sh/xxx.com_ecc/fullchain.cer
  1. /root/.acme.sh/xxx.com_ecc/fullchain.cer 配置到 nginx 的 ssl_certificate
  2. /root/.acme.sh/xxx.com_ecc/xxx.com.key 配置回调 nginx 的 ssl_certificate_key