原创声明:本文为作者原创,未经允许不得转载,经授权转载需注明作者和出处
使用命令行工具certbot
进行证书的申请。
certbot是个python的工具包,我常用服务器是centos,此处只描述centos上怎么安装和使用。其它的操作系统的可以参见cenrbot官网。
certbot位于EPEL库,所以先安装EPEL,yum install epel-release
, 然后再安装certbot,yum install certbot
, 安装完之后就可以使用certbot命令进行证书相关操作了。
使用nginx做反向代理时,证书的部署问题就手动了,所以使用certbot命令只生成对应域名的证书即可。
certbot certonly —standalone -d example.com -d www.example.com
执行上述命令后,会有界面提示找回邮箱及用户协议,输入邮件,点击同意后,执行完成后会在/etc/letsencrypt/
目录下会生成一堆的文件夹。
使用上述命令在对域名进行ssl证书申请时,服务器的80端口要暂时关闭,且域名的解析要正常,否则申请不下来的。
certbot的使用说明详细的就看看官网文档吧。
letsencrypt的证书默认是3个月的有效期,需要在到期之前手动续期一下才能继续使用。可以考虑使用crontab定时任务,如每个月去续期一下解决有效期的问题。
30 2 1 * * /usr/bin/certbot renew >> /var/log/le-renew.log
生成dhparam 参数,openssl dhparam -out /etc/ssl/certs/dhparams.pem 2048
,在后面配置nginx时会需要。
nginx中新建一个ssl站点的配置文件,内容如下:
server {
listen 443 ssl;
server_name example.com wwww.example.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.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_dhparam /etc/ssl/certs/dhparams.pem;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}