记录本博客网站配置https后的一些步骤及遇到一些问题
部署你的HTTPS,永久免费,自动续约。
1、本文基于NGINX,首先安装NGINX 并开启http_ssl_module
- 系统平台:CentOS7 64位。
安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-deve
安装 PCRE
PCRE 作用是让 Nginx 支持 Rewrite 功能。
下载 PCRE 安装包,下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
或者linux下载cd /usr/local/src/ wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
进入安装包目录
tar zxvf pcre-8.35.tar.gz cd pcre-8.35 ./configure && make && make install
查看pcre版本
pcre-config --version
安装 Nginx
1、下载 Nginx,下载地址:https://nginx.org/en/download.htmlwget http://nginx.org/download/nginx-1.6.2.tar.gz
2、解压安装包
tar zxvf nginx-1.6.2.tar.gz
3、进入安装包目录
cd nginx-1.6.2
4、编译并安装
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --
with-pcre=/usr/local/src/pcre-8.35 && make && make install
这里注意 http_ssl_module 必须要开启 并且注意编译命令的安装包目录是否正确
2、nginx 配置本博客通过域名访问
- 编辑 nginx conf目录下的 nginx.conf
server {
listen 80;
server_name www.ailinlin.top;
location / {
proxy_pass http://IP:端口;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
域名注册成功 并且配置过 DNS解析后通过上述的简单配置就可以通过域名访问本博客了。但此时还无法通过https访问
3、配置https访问本博客
Certbot 是一个由 Let's Encrypt 开发的免费开源工具,用于自动化部署和管理 SSL/TLS 证书。
它具有以下几个显著的好处:
- 免费证书:Certbot 使用 Let's Encrypt 作为其证书颁发机构,Let's Encrypt 提供免费的 SSL/TLS 证书。这意味着您可以使用 Certbot 轻松获取和更新有效的证书,而无需支付费用。
- 自动化:Certbot 可以自动化证书签发和更新的过程,减少了手动操作的工作量和错误的风险。您可以设置定期任务,让 Certbot 自动检查证书的到期日期,并在需要时自动进行更新。
- 安全性:使用 SSL/TLS 证书可以加密网站与用户之间的通信,确保数据在传输过程中的安全性。Certbot 简化了证书的获取和管理过程,使您能够快速轻松地为您的网站启用 HTTPS,提供更安全的访问方式。
本文介绍在nginx环境上的安装和使用certbot
要安装certbot,我们需要先安装snapd 。需要依次执行以下几条命令,执行完最后一步,需要重新登录服务器或者重启机器让snap生效。
sudo yum install epel-release sudo yum install snapd sudo systemctl enable --now snapd.socket sudo ln -s /var/lib/snapd/snap /snap
接下来,来安装certbot
执行安装命令
sudo snap install --classic certbot
设置软链接
sudo ln -s /snap/bin/certbot /usr/bin/certbot
到这里,certbot已经安装好了,简单介绍一下它的2个工作模式
-
sudo certbot --nginx
运行此命令获取证书,并让Certbot自动编辑您的nginx配置以提供证书,在一个步骤中打开HTTPS访问。 -
sudo certbot certonly --nginx
如果你感觉更保守,只需要证书。其他想手工修改nginx配置,运行这个命令。 在这里,我采用第一种方式。
-
执行
sudo certbot --nginx
后按照提示完成安装certbot会自动检查nginx配置过的域名,并且帮你修改为https配置。 你也可以按照第二种方式只生成证书自己进行nginx的配置。
4、配置https后 typecho 博客遇到的问题及解决方案
1、typecho 博客前端样式缺失
原因: 通过控制台查看css及js还是http链接。https不能访问http资源
解决方案:在博客后台设置-基本-站点地址把站点地址修改为正确的地址,包括正确的http/https协议。
2、typecho 博客之前上传的图片无法访问
原因同样是https不能访问http资源
解决方案:直接修改数据库中已经存过的文件链接地址
UPDATE typecho_contents SET text = REPLACE(text, '原http地址', '新https地址')
3、typecho 博客管理后台无法登陆切样式缺失
原因:猜测是因为用户与浏览器之间是 HTTPS 交互,但实际上 PHP 接收到的是来自 Cloud Flare 的 HTTP 交互,所以 PHP 使用了 HTTP 进行响应,结合 Typecho 的一些特性形成了这个问题。
解决方案:编辑 Typecho 站点根目录下的文件 config.inc.php,在最后添加一行
define('__TYPECHO_SECURE__',true);
即可。