网站Nginx服务安装https免费证书配置一条龙流程

搜索小程序   成语典故查询

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

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免费证书配置 - 掘金

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值