- Published on
nginx 证书自动续签配置 nginxconfig.io
- Authors
- Name
- JiGu
- @crypto20x
前期准备
- 注册好域名
- 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 里模式选择 完全