ssl申请与配置
配置使用linux基金会的开源ssl证书Let's Encrypt
- Let’s Encrypt 证书不仅是免费的,而且支持通配符证书(通配符证书指的是一个可以被多个子域名使用的公钥证书),多个子域名使用起来十分方便。
- 通过源码的脚本可以直接获取,申请流程非常简单.
- 证书有效期为90天,通过脚本可以直接更新.
服务器设置
以阿里云为例,其他服务器配置方式相同
433端口设置
登录服务器控制台,确认实例的安全组里,433端口是否有开放,没有需要添加一条规则
域名解析设置
域名需要设置一条解析记录,以便申请工具通过域名访问,确认域名所属
- 选择记录类型,一般选
A
,指向ipv4
地址,如果你是用ipv6地址
,选择AAAA
,域名重定向,选择CNAME
. - 主机记录,选择
www
或者@
或者其他都可以.这里需要记住你的主机记录,之后会用到. - 你的域名
- 记录值选择你要解析的ip地址
- TTL使用默认值就可以.
服务器端口处理
脚本在生成ssl证书时,需要使用到80
和433
端口,要保证端口没有被占用
1
2
3
4
5
6
7
8
$ sudo netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 623/nginx: master p
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 467/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 572/sshd
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 623/nginx: master p
使用kill命令结束掉使用80
与433
端口的进程
1
$ sudo kill [PID]
到这里,服务器的准备工作就完成了
申请
获取脚本文件
脚本开源在了github上,通过git
克隆仓库到本地
1
2
3
$ cd ${workspace}
$ git clone https://github.com/certbot/certbot
$ cd certbot
生成证书
1
$ ./certbot-auto certonly --webroot --agree-tos -v -t --email ${email} -w ${website root} -d ${domain name}
${email}
这里填写你的邮箱地址,建议与服务器的申请账号的邮箱地址保持一致${website root}
你的网页源码目录${domain name}
上面解析域名时,你设置的解析域名,如果主机记录设置了www
,这里应该是www.{domain name}
,设置了@
,就直接填写域名
如果你上面的设置都没问题,那么这里,问题就应该成功生成证书了
1
2
root# ls /etc/letsencrypt/live/`${domain name}`/
cert.pem chain.pem fullchain.pem privkey.pem README
生成dhparams
dhparams保证双方能安装的交换秘钥
1
$ openssl dhparam -out /etc/ssl/certs/dhparams.pem 2048
配置
准备好证书以后,就要配置进部署工具里,这里以nginx
为例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
server {
listen 80;
server_name ${domain name} www.${domain name};
return 301 ${domain name}$request_uri;
}
server {
listen 443 ssl;
server_name ${domain name} www.${domain name};
ssl on;
ssl_certificate /etc/letsencrypt/live/${domain name}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${domain name}/privkey.pem;
ssl_dhparam /etc/ssl/certs/dhparams.pem;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root ${website root};
index index.html index.htm;
}
}
重启nginx服务即可
更新证书
证书有效期是90天,需要定期更新
1
$ ./certbot-auto renew -v
other
完整的nginx
配置文件: https://github.com/yan-wyb/source/blob/master/web/nginx/nginx.conf
issues
如果有疑惑或错误,请提issues –> Issues