序言
最近一周我迫切想要启用 https, 上周还因此把网址推到重建,并升级了服务器系统。
究其根本, 是因为我之前使用 readthedocs 把自己的学习笔记搭建起来, 并使用 docs 子域名进行解析, 谁知道 readthedocs 是 https 类型的网站, 我另外的 wiki 子域名和当前博客都是 http 类型的, 然后又是使用 cloudflare 进行缓存, 结果就经常出现 too many redirect 导致 chrome 上打不开网站。 无奈之下才想起都启用 https 的。
事先声明: 在启用 https 之前, 请把网站 wp-login.php 的屏蔽给解除了(之前为了安全把这个给屏蔽了), 使之可以正常访问, 不然会出现如下错误
我上周没有进行下去的原因就是这个 reauth=1 was not found on this server. 导致根本无法进入后台。
我是把 WP Cerber 安全插件的屏蔽 wp-login.php 的设置给关闭了才搞定, 就这花费了我昨天一天的时间才找到原因, 网上的操作基本上我都试过。虽然开启 https 之后需要登录两次, 但能正常使用 docs 子域名也是好的
安装证书
上一篇文章已经写了如何使用 acme.sh 申请泛域名证书:使用 acme.sh 申请泛域名证书
现在把申请到的证书使用起来。
首先需要说明, 我的网站是使用 lnmp 搭建的, nginx 和 PHP mysql 都在 /usr/local 目录下
我打算将证书安装到 nginx conf/vhost 目录下面。 在 /usr/local/nginx/conf/vhost/
目录创建 cert
文件夹, 然后执行如下命令
acme.sh --install-cert -d liangz.org --cert-file /usr/local/nginx/conf/vhost/cert/liangz.org.cer --key-file /usr/local/nginx/conf/vhost/cert/liangz.org.key --fullchain-file /usr/local/nginx/conf/vhost/cert/fullchain.cer --reloadcmd "service nginx restart"
这样就将证书文件安装到 /usr/local/nginx/conf/vhost/cert
目录里面了, 可以自行查找证书文件
配置 Nginx
首先在 nginx.conf 文件中添加如下 SSL 相关的设置
# SSL
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
# Diffie-Hellman parameter for DHE ciphersuites
#ssl_dhparam /etc/nginx/dhparam.pem;
# Mozilla Intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA
-AES256-GCM-SHA384;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
resolver_timeout 2s;
这些设置还是在 http 中, 并不是 server 中, 这些配置来自 https://www.digitalocean.com/community/tools/nginx?global.app.lang=zhCN 生成的配置,应该是没问题的。
然后修改自己网站的 nginx 配置, lnmp 中是在 vhost 目录下面, 我的配置如下
server {
listen 80;
server_name liangz.org www.liangz.org; # 自行修改成你的域名
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name medias.liangz.org;
# SSL
ssl_certificate /usr/local/nginx/conf/vhost/cert/fullchain.cer;
ssl_certificate_key /usr/local/nginx/conf/vhost/cert/liangz.org.key;
return 301 https://www.liangz.org$request_uri;
}
server
{
listen 443 ssl http2;
ssl_certificate /usr/local/nginx/conf/vhost/cert/fullchain.cer;
ssl_certificate_key /usr/local/nginx/conf/vhost/cert/liangz.org.key;
server_name www.liangz.org liangz.org;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.liangz.org;
include rewrite/wordpress.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/www.liangz.org.access.log;
}
最上面的那个 server 配置, 是用来将 http 请求自动跳转到 https; 第二个是我自己历史遗留问题; 最后一个才是网站使用的。
nginx 配置修改完毕后,别忘了重启 Nginx service nginx restart
修改 CloudFlare
Nginx 重启之后还是不行的, 需要确保 CloudFlare 中的 SSL 不能是 None, 否则会出现 too many redirect 导致网站无法正常访问。
我这边用的证书是合法的, 因此可以选择最后一个。
结语
至此, 网站已经上了 SSL, 访问起来也有一个锁的标志了。 算是大功告成
如有错误,敬请指出,感谢指正! — 2022-11-27 15:04:10
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了