绵阳做网站公司,玉林做绿化苗木网站的是哪个单位,wordpress链接提交插件,东莞seo网站制作报价创建文件夹
mkdir /usr/local/develop/ 安装Certbot客户端
yum install certbot
首先确保example.com和www.example.com这两个域名通过DNS解析绑定了你的web 服务器的公网 IP 就是说先要完成域名解析到服务器 下面命令会验证 /var/www/example 他会将一些命令文件存在…创建文件夹
mkdir /usr/local/develop/ 安装Certbot客户端
yum install certbot
首先确保example.com和www.example.com这两个域名通过DNS解析绑定了你的web 服务器的公网 IP 就是说先要完成域名解析到服务器 下面命令会验证 /var/www/example 他会将一些命令文件存在该目录下 -d example.com -d www.example.com 意思是让Certbot 将为所有列出的域名生成一个单一的证书。这种证书通常被称为多域名SAN, Subject Alternative Name证书。 certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com 那么
certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com -d app.example.com 意思就是 example.com www.example.com app.example.com 共享证书 先创建该文件夹
一次创建多个文件夹 -p
mkdir -p /var/www/xxxxxx
certbot会往里写入文件 并通过http请求访问来验证你的服务器IP是否和域名绑定
1小时有5次机会 发送请求过多有限制 事实上看到/var/www/xxxx下没有文件 应该是检测了下域名和IP是否已经通过DNS绑定 或者说是我们打开/var/www/xxx文件的写入权限 反正测试通过 且拿到SSL证书了
注意80端口打开 server { listen 80; server_name xxxxx.com www.xxxxx.com; location / { root /var/www/xxxx; # 您的 webroot 路径 } # 其他 location / 配置用于正常的网站内容 } 把Nginx配置 启动 certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com 他会要你输入邮箱地址(你的邮箱) 同意服务条款(Y) 选择是否加入邮件列表(Y) 创建成功 ssl证书就保存在这两文件下 配置示例 server {server_name diamondfsd.com www.diamondfsd.com;listen 443;ssl on;ssl_certificate /etc/letsencrypt/live/diamondfsd.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/diamondfsd.com/privkey.pem;location / {proxy_pass http://127.0.0.1:3999;proxy_http_version 1.1;proxy_set_header X_FORWARDED_PROTO https;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;}}server {server_name api.diamondfsd.com;listen 443;ssl on;ssl_certificate /etc/letsencrypt/live/api.diamondfsd.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/api.diamondfsd.com/privkey.pem;location / {proxy_pass http://127.0.0.1:4999;proxy_http_version 1.1;proxy_set_header X_FORWARDED_PROTO https;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;}}自动检查更新系统内证书
certbot renew --dry-run 这样就方便多了 下面没有测试
关于自动刷新证书
自动更新 SSL 证书
配置完这些过后我们的工作还没有完成。 Lets Encrypt 提供的证书只有90天的有效期我们必须在证书到期之前重新获取这些证书certbot 给我们提供了一个很方便的命令那就是 certbot renew。 通过这个命令他会自动检查系统内的证书并且自动更新这些证书。 我们可以运行这个命令测试一下
certbot renew --dry-run 我在运行的时候出现了这个错误 Attempting to renew cert from /etc/letsencrypt/renewal/api.diamondfsd.com.conf produced an unexpected error: At least one of the required ports is already taken.. Skipping. 这是因为我的http://api.diamondfsd.com生成证书的时候使用的是 --standalone 模式验证域名的时候需要启用443端口这个错误的意思就是要启用的端口已经被占用了。 这时候我必须把nginx先关掉才可以成功。果然我先运行 service nginx stop 运行这个命令就没有报错了所有的证书都刷新成功。
证书是90天才过期我们只需要在过期之前执行更新操作就可以了。 这件事情就可以直接交给定时任务来完成。linux 系统上有 cron 可以来搞定这件事情。 我新建了一个文件 certbot-auto-renew-cron 这个是一个 cron 计划这段内容的意思就是 每隔 两个月的 凌晨 2:15 执行 更新操作。
15 2 * */2 * certbot renew --pre-hook service nginx stop --post-hook service nginx start--pre-hook 这个参数表示执行更新操作之前要做的事情因为我有 --standalone 模式的证书所以需要 停止 nginx 服务解除端口占用。 --post-hook 这个参数表示执行更新操作完成后要做的事情这里就恢复 nginx 服务的启用
最后我们用 crontab 来启动这个定时任务
crontab certbot-auto-renew-cron至此整个网站升级到HTTPS就完成了。 总结一下我们需要做什么
获取Lets Encrypt 免费证书配置Nginx开启HTTPS定时刷新证书