首页
直播
美图
视频
更多
统计
推荐
电子书站
免费视频站
好书推荐
Search
1
yii2框架融合workman 消息推送socketIO 插件
246 阅读
2
模板 源码 下载地址 集合
210 阅读
3
wordpress 插件 (主题)在线安装失败 解决办法探索
151 阅读
4
PHP使用json_encode()处理数组时,不转义 中文和 反斜线 等字符串
143 阅读
5
mysql 精准匹配时;字符串字段不区分大小写解决办法
125 阅读
我的博客
错误记录
登录
Search
标签搜索
php
mysql
wordpress
nginx
mysql安全
linux
typecho
redis
index.php
多继承
trait
微信公众号
微信
图片
文字
图文
用户权限
navicat
mysql用户权限
弱类型语言
周周
累计撰写
28
篇文章
累计收到
2
条评论
首页
栏目
我的博客
错误记录
页面
直播
美图
视频
统计
推荐
电子书站
免费视频站
好书推荐
搜索到
1
篇与
的结果
2022-01-21
如何將http网站免费升级成https协议||如何將http网站免费升级成https签证?
如何將http网站免费升级成https协议 使用encrypt 生成 签名。HTTPS的好处还有很多,但仅此这一条,就够我们花心思去升级我们的博客系统了。 了解Let's Encrypt Let's Encrypt 就是一个 证书。如果要启用HTTPS,我们就需要从授权机构(以下简称CA) 处获取一个证书, 而从 Let's Encrypt ,我们可以获得网站域名的免费的证书。Certbot 简介 Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们 自动 获取免费的Let's Encrypt 证书。 Certbot 是支持所有 Unix 内核的操作系统的,本文的例子是基于CentOS 8来讲解的。 获取免费证书1、 安装Certbot客户端 centos 采用yum 安装 , 简单快捷 。 你可以采用其他模式安装 。 yum install certbot 2、使用命令为域名生成签证 ; 生成https签证:certbot certonly --webroot -w /your_local_dir/wwwroot/yii2/frontend/web/ -d wechat.abclsp.com 将https签证生成到制定文件夹中 --config-dir 参数certbot certonly --webroot -w /your_local_dir/wwwroot/yii2/frontend/web/ -d wechat.abclsp.com --config-dir /etc/nginx/conf.d/certss/注意: your_local_dir : 是你的服务地址,请注意项目路径。说明:/your_local_dir/wwwroot/yii2/frontend/web/ : 网站的根目录; wechat.abclsp.com : 网站域名 --config-dir /etc/nginx/conf.d/certss/ : http签证存储的地方错误样例:certbot certonly --webroot -w /your_local_dir/wwwroot/yii2/ -d wechat.abclsp.com --config-dir /etc/nginx/conf.d/certss/结果如图: 错误的地方就是 文件夹路径不是网站的根目录, 成功案例:certbot certonly --webroot -w /your_local_dir/wwwroot/yii2/frontend/web/ -d wechat.abclsp.com --config-dir /etc/nginx/conf.d/certss/结果如图: certbot提供很多的参数可以用,可参考这里 certbot 命令地址 我们有其他例如nginx的服务,它占用了443端口,我们就要先停止这些服务,在生成证书完毕后,我们再启用这些服务。certbot certonly --standalone -d example.com -d www.example.com 至此,我们的第一证书生成已完成。下一步是配置我们的Web服务器并启用HTTPS。4 Nginx 配置启用 HTTPS 我的配置是使用的是Nginx 服务器来转发请求,这里贴一下我的Nginx配置。server { listen 80; server_name wechat.abclsp.com; rewrite ^(.*) https://wechat.abclsp.com$1 permanent; } server { listen 443; server_name wechat.abclsp.com; access_log /your_local_dir/wwwlogs/wechat_access_nginx.log combined; error_log /your_local_dir/wwwlogs/error.log; root /your_local_dir/wwwroot/yii2/frontend/web; index index.html index.htm index.php; ssl_certificate /etc/nginx/conf.d/certss/live/wechat.abclsp.com/fullchain.pem; ssl_certificate_key /etc/nginx/conf.d/certss/live/wechat.abclsp.com/privkey.pem; #error_page 404 /404.html; #error_page 502 /502.html; location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } location ~ [^/]\.php(/|$) { #fastcgi_pass remote_php_ip:9000; fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; #增加这一句 fastcgi_param PATH_INFO $fastcgi_path_info; #增加这一句 include fastcgi.conf; } include maccms.conf; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { expires 30d; access_log off; } location ~ .*\.(js|css)?$ { expires 7d; access_log off; } location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) { deny all; } } 配置主要是监听 443 端口和启用 SSL,并配置了 SSL 的证书路径(公钥,私钥的路径),通过这些配置,我们就可以成功启用Https了。 你打开网站的时候就可以看到标有 安全 的字样。比如:5 自动更新 SSL 证书 配置完这些后,我们的工作尚未完成。 Let's Encrypt 提供的证书只有90天的有效期,我们必须在这些证书过期之前重新获得它们。有什么办法呢?certbot 给我们提供了一个很方便的命令,那就是certbot renew # 使用【默认配置目录】的更新命令 certbot renew --config-dir /etc/nginx/conf.d/certs # 使用【自定义配置目录】的更新命令 使用此命令,他将自动检查系统中的证书并自动更新它们。注意: 更新完成后需要重启Nginx:nginx -s reload。 我们可以运行这个命令测试一下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. 这是因为生成证书的时候使用的是 --standalone 模式。 这个模式在验证域名时,此模式需要启用端口443。此错误意味着要启用的端口已被占用。 这时候必须先关掉nginx,运行以下命令:nginx -s stop 运行这个命令,没有报错的话,也就是所有的证书都刷新成功。证书是90天才过期,我们只需要在过期之前执行更新操作就可以了。 当然,这种不用我们每次去更新,我们容易忘记的,可以用linux的定时任务来完成。用 crontab做一个定时任务就可以了 写上 cron 计划:编写如下任务详情15 2 * */2 * certbot renew --pre-hook "nginx -s stop" --post-hook "nginx -s start" # standalone模式 15 2 * */2 * certbot renew --post-hook "nginx -s reload" # 非standalone模式 命令的意思就是:每隔 两个月的 凌晨 2:15 执行更新操作。 --pre-hook 表示执行更新操作之前要做的事情。 --standalone模式的证书需要停止 nginx 服务,解除端口占用。 --post-hook 表示执行更新操作完成后要做的事情,这里就恢复 nginx 服务的启用 最后我们用 crontab -e 打开 linux 定时任务添加15 2 * */2 * certbot renew --pre-hook "nginx -s stop" --post-hook "nginx -s start" # standalone模式 15 2 * */2 * certbot renew --post-hook "nginx -s reload" 至此,整个网站升级到HTTPS就完成了。6 删除证书 删除所有证书:$ sudo certbot delete 删除指定证书:$ sudo certbot delete --cert-name example.com 删除指定目录下的指定证书:$ certbot delete --cert-name example.com --config-dir /etc/nginx/conf.d/certs
2022年01月21日
82 阅读
0 评论
0 点赞