闲来无事,就想自己弄个HTTPS网站。至于什么是HTTPS,它和HTTP区别不在本文讨论之列,想了解的可以百度或谷歌。
先介绍一下我用的系统环境是Centos 7 64位。
准备工作
安装 git
yum -y install git
没有安装NGINX的, 可以通过以下命令
yum -y install nginx
申请SSL证书
我申请的是Let’s Encrypt免费SSL证书。
一方面考虑到Let’s Encrypt的证书是免费的,再就是用起来放心(它由 Linux 基金会托管,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS)。
在获取某个站点证书文件的时候,我们需要在安装PYTHON2.7以及GIT,更需要将域名解析到当前VPS主机IP中。
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --standalone --email xxxxxx@gmail.com -d gzqiang.cn -d www.gzqiang.cn
注:为了避免错误,尽量用国外的邮箱,我用的谷歌邮箱。
第一步,看到这界面
出现(A)gree/(C)ancel 时,输入“A”回车。
下一步
输入 “Y” 回车
在完成Let’s Encrypt证书的生成之后,我们会在”/etc/letsencrypt/live/gzqiang.cn/”域名目录下有4个文件就是生成的密钥证书文件。
cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件
配置HTTPS网站
我用的Nginx ,所以只用 fullchain.pem,privkey.pem 就可以了
配置如下
Nginx配置文件 www.conf
server {
listen 443 ssl;
ssl on;
ssl_certificate /etc/letsencrypt/live/gzqiang.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gzqiang.cn/privkey.pem;
server_name www.gzqiang.cn;
root /var/www/;
index index.html index.htm;
location / {
autoindex off;
}
location ~ .*\.(php|php5)?$ {
fastcgi_pass 127.0.0.1:8888;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
如果想强制使用https访问(http跳转到https)
新建 http80.conf
server {
listen 80;
server_name www.gzqiang.cn;
rewrite ^(.*)$ https://$host$1 permanent;
}
重启nginx
systemctl restart nginx
至此快速搭建https 网站完成。
解决Let’s Encrypt免费SSL证书有效期问题
我们从生成的文件中可以看到,Let’s Encrypt证书是有效期90天的,需要我们自己手工更新续期才可以。
./letsencrypt-auto certonly --renew-by-default --email xxxxx@gmail.com -d gzqiang.cn -d www.gzqiang.cn
这样我们在90天内再去执行一次就可以解决续期问题,这样又可以继续使用90天。如果我们怕忘记的话也可以制作成定时执行任务,比如每个月执行一次。