服务器 nginx 使用certbot 免费http转https(详)
前言:
如果网站没有域名没有加上https,很容易被微信浏览器拦截掉,因为是不安全的,导致很多文件还没有加载出来,样式不全,或者直接空白页。
https是什么?
摘抄百度百科:HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 1 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 [2] 。
简而言之就是你的域名是安全的。
可以参考以下资料:
如何将http转成https?
Let‘s Encrpyt能让的网站拥有一个完全免费的SSL安全证书,从而启用安全可靠的HTTPS协议。
官网链接:https://certbot.eff.org/
certbot 支持各个操作系统,centos,macos,windows等都是有的可以上官网看看
我使用的是nginx反向代理web服务器,操作系统是ubuntu16
1.获取certbot-auto
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
2.生成证书
生成证书前需要关闭服务器
service nginx stop
然后我们采用最简单的方式 直接生成证书。注意xxx需要替换为自己的东西。
./certbot-auto certonly --standalone --email xxx@xxx.com --agree-tos -d xxx.com -d www.xxx.com
–email 是指你的邮箱
-d 是指你的域名,这里可以配置多域名 也可以只配置一个
可能会遇到的问题:
一直卡在installing python packages 半天没有反应,最后提示安装失败。
原因:
1、Python版本低于2.7;
2、pip命令没有安装;
3、pip镜像源有问题;
如果pip未安装可根据提示安装pip,但是这个时候安装好的pip是默认的连接镜像源,资源可能访问获取较慢。
不妨将镜像源修改为清华镜像源,这样就能解决pip镜像源的问题。
linux下:修改 ~/.pip/pip.conf (没有就创建一个)
windows下:修改 用户名\pip\pip.ini (没有就创建一个)
【pip.conf or pip.ini文件编写如下】
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
pip解决了 就再输出之前的安装命令,多尝试几次。
3.配置证书
Nginx中配置SSL证书的配置文件参考如下:
server {
listen 443 ssl;
server_name xxx.com;
location / {
# proxy_pass http://127.0.0.1:88; 这里换成你想要转发的端口
}
ssl_certificate /etc/letsencrypt/live/xxx.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xxx.com/privkey.pem;
}
server {
listen 80;
server_name xxx.com;
location / {
# ...
}
#如果需要把http强制转换为https,需要配置以下内容
if ($host = xxx.com) {
return 301 https://$host$request_uri;
}
}
配置完成后,启动Nginx,浏览器中查看效果。
service nginx start
关于自动续签
由于certbot的免费时间只有90天,所以需要每两个月上去续签一次
#查看SSL证书的过期时间
./certbot-auto certificates
#更新证书
./certbot-auto renew
#如果不需要返回的信息,可以用静默方式
./certbot-auto renew --quiet
#强制更新证书命令:
./certbot-auto renew --force-renew
#手动更新
./certbot-auto renew -v
#自动更新
./certbot-auto renew --quiet --no-self-upgrade
#定时更新
加入定时任务 crontab -e
0 3 */15 * * /root/certbot-auto renew --renew-hook "/etc/init.d/nginx reload" >> /root/renew.log
#每十五天的凌晨三点 运行一次更新的脚本,并执行 nginx 重启 并输出日志文件
#我的certbot-auto包是在root目录下的
你可以在命令行执行/root/certbot-auto renew >> /root/renew.log看看是否执行正常,如果一切OK,那么我们的配置到此结束!
欢迎大家补充,评论。
有问题可以联系qq:247410779