搜索小程序 成语典故查询
Let’s Encrypt 安装https免费证书配置
1.http 是一个传输网页内容的协议,比如你看到的 http 开头的网站 www.163.com,其网页上的文字、图片、 CSS 、 JS 等文件都是通过 http 协议传输到我们的浏览器,然后被我们看到。
而 https 可以理解为“ HTTP over SSL/TLS ”,好端端的 http 为什么需要“ over SSL/TLS ”呢,因为 http 是明文传输的,通过http 协议传输的内容很容易被偷看和篡改,为了安全(你肯定不想被人偷看或者篡改网页内容吧,比如网站银行密码什么的。)就为 http 协议再加上了一层 SSL/TLS 安全协议,所以就有了 https
2.如何部署
你只需要有一张被信任的CA(Certificate Authority )也就是证书授权中心颁发的 SSL 安全证书,并且将它部署到你的网站服务器上。一旦部署成功后,当用户访问你的网站时,浏览器会在显示的网址前加一把小绿锁,表明这个网站是安全的,当然同时你也会看到网址前的前缀变成了 https ,不再是 http
3.如果获得 SSL 安全证书
理论上,我们自己也可以签发 SSL 安全证书,但是我们自己签发的安全证书不会被主流的浏览器信任,所以我们需要被信任的证书授权中心( CA )签发的安全证书。而一般的 SSL 安全证书签发服务都比较贵,比如 Godaddy 、 GlobalSign 等机构签发的证书一般都需要20美金一年甚至更贵,不过为了加快推广 https 的普及, EEF 电子前哨基金会、 Mozilla 基金会和美国密歇根大学成立了一个公益组织叫 ISRG ( Internet Security Research Group ),这个组织从 2015 年开始推出了 Let’s Encrypt 免费证书。这个免费证书不仅免费,而且还相当好用,所以我们就可以利用 Let’s Encrypt 提供的免费证书部署 https 了。那么怎么获得 Let’s Encrypt 安全证书,并且将它部署在自己的网站服务器上呢?这就是这篇文章要讲的内容
4.具体操作:
1>.获取certbot客户端
wget dl.eff.org/certbot-aut…
chmod a+x certbot-auto
mac为例 :brew install certbot brew install certbot
- 参考地址: Certbot Instructions | Certbot
2>停止nginx
service nginx stop
确保nginx已经安装了http_ssl_module模块
[root@iZ257v6fpmnZ configs]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.10.3
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=xxx --group=xxx --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_stub_status_module --with-http_ssl_module --with-pcre --lock-path=/var/run/nginx.lock --pid-path=/var/run/nginx.pid
如果已经安装过nginx,但是未配置ngx_http_ssl_module模块
需要重新配置:
./configure --prefix=/usr/local/nginx1.10 --with-http_stub_status_module --with-http_ssl_module
配置完成后,需要安装make,不用运行make install(会被覆盖安装)
将之前安装的nginx备份
cp nginx nginx.bak
停止nginx
将重新编译完成的nginx覆盖原有的nginx
cp ./objs/nginx /usr/local/nginx1.10/sbin/
3>生成证书(如果后期生成报错,先删除原有certbot-auto,按第一步重新下载certbot即可)
#使用-d追加多个域名
./certbot-auto certonly --standalone --email 241495843x@qq.com --agree-tos -d itech -d www.ietch9.com
在证书生成之后:发现/etc/letsencrypt 下面多了这些文件
/etc/letsencrypt/
├── accounts
│ └── acme-v02.api.letsencrypt.org
│ └── directory
│ └── 6bea6b46b9a0c4d2c38d3ea2232f5f9c
├── archive
│ └── itech9.com
├── configs
├── csr
├── keys
├── live
│ └── itech9.com
├── renewal
└── renewal-hooks
├── deploy
├── post
└── pre
进入live 目录我们会在 "/etc/letsencrypt/live/itech9/" 域名目录下有4个文件就是生成的密钥证书文件。
/etc/letsencrypt/live/itech9.com
├── cert.pem -> ../../archive/itech9.com/cert1.pem
├── chain.pem -> ../../archive/itech9.com/chain1.pem
├── fullchain.pem -> ../../archive/itech9.com/fullchain1.pem
├── privkey.pem -> ../../archive/itech9.com/privkey1.pem
└── README
5.配置nginx
server {
#listen 101.100.182.230:443;
listen 443 ssl;
client_max_body_size 20M;
server_name www.itech9.com itech9.com;
charset utf-8;
index index.html index.htm index.php;
root /data/project/xxx/public;
ssl on;
ssl_certificate /etc/letsencrypt/live/itech9.com/fullchain.pem; #公钥
ssl_certificate_key /etc/letsencrypt/live/itech9.com/privkey.pem; #私钥
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256- SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
ssl_session_cache shared:SSL:50m;
ssl_prefer_server_ciphers on;
location / {
....
}
}
6.启动nginx
service nginx start
7.自动续费脚本
cd /etc/letsencrypt/
创建/etc/letsencrypt/configs/renew-cert.sh
[root@iZ257v6fpmnZ configs]# cat renew-cert.sh
#!/bin/bash
停止nginx
sudo /usr/local/nginx/sbin/nginx -s stop
续签
--force-renew 强制更新
/data/source_code/certbot-auto renew --force-renew
启动nginx
sudo /usr/local/nginx/sbin/nginx
chmod a+x renew-cert.sh
如果更新证书时出现报错:
Couldn’t download raw.githubusercontent.com/certbot/cer…
使用命令打开etc文件夹下面的hosts文件:
vim /etc/hosts
增加内容
199.232.4.133 raw.githubusercontent.com
重启网络
service network restart
或者
/etc/init.d/network restart
8.自动更新https证书
/crontab定时任务自动更新证书
0 4 1 */2 * /etc/letsencrypt/configs/renew-cert.sh >/root/crontab.log 2>&1
Let’s Encrypt 生成的免费证书为3个月时间,但是我们可以无限次续签证书
问题:let’s Encrypt 证书之安装故障 Could not bind to IPv4 or IPv6.
Problem binding to port 80: Could not bind to IPv4 or IPv6.
则原因是 nginx 占用了80端口,输入 service nginx stop。然后再次执行证书安装命令,即可顺利安装。
安装完毕后,输入 service nginx start,重启 nginx 服务。
参考网址:
1.certbot.eff.org/
2.blog.csdn.net/qq_39594705…
3.yq.aliyun.com/articles/13…
4.blog.csdn.net/qingtian200…
5.blog.csdn.net/putative/ar…
6.www.huangyuyi.cn/2018/04/08/…
acme.sh 续费管理
github.com/Neilpang/ac…
公众号看下
成语宝典查询
成语典故|对牛弹琴
掘金地址:Let’s Encrypt 安装https免费证书配置 - 掘金