免费SSL证书申请使用Let's Encrypt。
1、Let's Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起。
2、Let's Encrypt证书有效期三个月,每三个月需要续签证书。
3、Let's Encrypt注册主域名认证频率20个/周,同一域名重复认证 5次/周。
Linxu下可以使用certbot做签名证书。
certbot的官网地址https://certbot.eff.org/
1、工具准备
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
certbot的两种工作方式:
(1)、 standalone 方式: certbot 会自己运行一个 web server 来进行验证。如果我们自己的服务器上已经有 web server 正在运行 (比如 Nginx 或 Apache ),用 standalone 方式的话需要先关掉它,以免冲突。
(2)、webroot 方式: certbot 会利用既有的 web server,在其 web root目录下创建隐藏文件, Let’s Encrypt 服务端会通过域名来访问这些隐藏文件,以确认你的确拥有对应域名的控制权。
2、使用certbot-auto命令,生成证书
./certbot-auto certonly --webroot -w /usr/local/nginx/html/ -d aaa.sunwukong.cn -d bbb.sunwukong.cn -d ccc.sunwukong.cn -d dddd.sunwukong.cn
/usr/local/nginx/html/ 是nginx的web目录
aaa.suwukong.cn是需要申请证书的域名,可以填写多个子域名。这里换成你自己的域名。
3、命令执行过程中需要输入邮箱地址,确认等信息。直接输入Y或YES。
4、执行完成后生成证书如下:
# tree /etc/letsencrypt/
/etc/letsencrypt/
├── accounts
│ ├── acme-staging-v02.api.letsencrypt.org
│ │ └── directory
│ └── acme-v02.api.letsencrypt.org
│ └── directory
│ └── 009533753e7a6b7f6b27db646b9327da
│ ├── meta.json
│ ├── private_key.json
│ └── regr.json
├── archive
│ └── mapp.sunwukong.cn
│ ├── cert1.pem
│ ├── chain1.pem
│ ├── fullchain1.pem
│ └── privkey1.pem
├── csr
│ └── 0000_csr-certbot.pem
├── keys
│ └── 0000_key-certbot.pem
├── live
│ └── mapp.sunwukong.cn
│ ├── cert.pem -> ../../archive/mapp.sunwukong.cn/cert1.pem
│ ├── chain.pem -> ../../archive/mapp.sunwukong.cn/chain1.pem
│ ├── fullchain.pem -> ../../archive/mapp.sunwukong.cn/fullchain1.pem
│ ├── privkey.pem -> ../../archive/mapp.sunwukong.cn/privkey1.pem
│ └── README
├── renewal
│ └── mapp.sunwukong.cn.conf
└── renewal-hooks
├── deploy
├── post
└── pre
5、Nginx配置
server {
listen 443 ssl;
server_name mapp.sunwukong.cn;
ssl_certificate /etc/letsencrypt/live/mapp.sunwukong.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mapp.sunwukong.cn/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
location /api/ {
proxy_pass http://127.0.0.1:8080;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
6、启动nginx或重新加载
nginx -s reload
7、访问验证