Published on

nginx 证书自动续签配置 nginxconfig.io

Authors

前期准备

  • 注册好域名
  • DNS设置好A记录
  • cloudflare 先关掉代理,only DNS
  • nginx

证书申请工具 acme.sh

使用该工具进行证书申请,这个比certbot好用 wiki使用说明在此 使用说明

1. 安装acme.sh

官方建议使用root进行操作,否则会有各种奇葩问题

curl https://get.acme.sh | sh -s email=my@example.com

这里的邮箱是证书到期会发通知,其实随便填都可以

2. 申请证书

一定要将域名配置为80端口,否则签发不成功!!

在申请证书前,请先配置nginx能解析该域名到端口 编辑nginx的配置

vim /etc/nginx/site-enable/default
server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    location / {
      root /var/www;
}

server_name配置成要解析的域名,location / 随便解析到一个目录,acme.sh会自动完成验证并申请证书 nginx 使用这个命令进行证书申请

acme.sh --issue -d mydomain.com --nginx
3. 生成nginx配置

安装指引,填写,然后下一步,直到完成。不需要的可以不勾选

全局配置主要设置一下工作线程,用户名,目录之类的,其他用不到的可以保持默认。 安全策略里的Content-Security-Policy 最好删除,会导致有些前端库无法加载。

按照提示,下载安装配置

4. 生成dhparam

OpenSSL 的 dhparam 用于生成和管理 dh 文件。dh(Diffie-Hellman) 是著名的密钥交换协议,它可以保证通信双方安全地交换密钥。

openssl dhparam -out /etc/nginx/dhparam.pem 2048
5. 安装证书
acme.sh --install-cert -d example.com \
--key-file       /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd     "service nginx force-reload"

记得这里的证书路径和nginxconfig.io上面配置的路径要一致

Cloudflare 配置

DNS里打开proxy,保护ip不暴露 因为我做了http强制转https的配置,需要在ssl/tls 里模式选择 完全