免费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-autochmod 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、访问验证