只有单域名的证书,不支持通配符。Let's Encrypt可以申请通配符的SSL证书。
域名证书申请下来后,在nginx中进行配置开启ssl,并配置http的访问自动跳转到https的网址。
配置好后在新的博客系统上发现了一个小问题,需要对CodeIgniter4进行参数调整。
下面详细介绍CodeIgniter4的参数调整,以及nginx的参数配置信息。
在发日志的界面出现“此表单不安全,因此,系统已关闭自动填充功能”
出现这个问题的原因是,Post的提交地址还是对应的http网站。
这个需要修改CodeIgniter4的App\Config\App.php 的默认网址参数,将参数设置为 https的默认网址。
/**
* --------------------------------------------------------------------------
* Base Site URL
* --------------------------------------------------------------------------
*
* URL to your CodeIgniter root. Typically, this will be your base URL,
* WITH a trailing slash:
*
* http://example.com/
*/
public string $baseURL = 'https://www.rickw.cn/';
* --------------------------------------------------------------------------
* Base Site URL
* --------------------------------------------------------------------------
*
* URL to your CodeIgniter root. Typically, this will be your base URL,
* WITH a trailing slash:
*
* http://example.com/
*/
public string $baseURL = 'https://www.rickw.cn/';
然后查阅了一下CodeIgniter4手册和安全建议,还要设置Cookie的安全性。
修改文件:App\Config\Cookie.php
/**
* --------------------------------------------------------------------------
* Cookie Secure
* --------------------------------------------------------------------------
*
* Cookie will only be set if a secure HTTPS connection exists.
*/
public bool $secure = true;
* --------------------------------------------------------------------------
* Cookie Secure
* --------------------------------------------------------------------------
*
* Cookie will only be set if a secure HTTPS connection exists.
*/
public bool $secure = true;
这样设置后Cookie将只在https的访问中传送,在http的访问中不会传输。
这样可以避免Cookie被嗅探、劫持等风险。
Nginx配置 http 跳转到 https
server {
listen 80;
server_name www.rickw.cn rickw.cn;
rewrite ^/(.*)$ https://www.rickw.cn/$1 permanent;
}
listen 80;
server_name www.rickw.cn rickw.cn;
rewrite ^/(.*)$ https://www.rickw.cn/$1 permanent;
}
Nginx中配置SSL站点
主要是将阿里云下载的证书文件 pem和key上传到服务器中,然后参考下面修改一下证书文件的路径即可。
server{
listen 443 ssl;
listen [::]:443 ssl;
server_name www.rickw.cn rickw.cn;
#填写证书文件绝对路径
ssl_certificate /cert/<cert-file-name>.pem;
#填写证书私钥文件绝对路径
ssl_certificate_key /cert/<cert-file-name>.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
listen 443 ssl;
listen [::]:443 ssl;
server_name www.rickw.cn rickw.cn;
#填写证书文件绝对路径
ssl_certificate /cert/<cert-file-name>.pem;
#填写证书私钥文件绝对路径
ssl_certificate_key /cert/<cert-file-name>.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;