简单几步生成免费SSL证书(https证书)
https
越来越普及,有些场景比如微信回调地址还强制要求必须使用https协议。但一年上千块钱的商业ssl证书, 对于个人和初创企业来说,成本有点高。这时我们可以考虑选择免费的SSL证书,Let's Encrypt是国外的一个免费SSL证书项目,使用过后觉得非常靠谱,配置也很简单方便。
下面就如何为你的网站添加https支持进行讲解,这里假设你已经有了基础配置,比如http访问已经是正常的,所以关于如何配置web服务器不会做过多的介绍。
安装certbot
访问网站https://certbot.eff.org/,选择你使用的web服务软件(nginx?Apache?)和操作系统版本,页面会自动为你生成安装certbot
的命令。
以nginx
和ubuntu16.04
为例,生成的安装脚本为:
xxxxxxxxxx
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx
生成证书
安装好cerbot
后,就可以使用如下命令生成证书了,以nginx
为例:
$ sudo certbot --nginx
选择要为哪个域名生成ssl证书
选择以何种方式生成配置
这里我们选择
1:No redirect
证书和配置自动生成成功
不出意外的话会得到下面的成功提示。
同时你也会发现,certbot自动帮你的nginx配置文件,添加了两行证书文件所在路径的配置。
完善nginx配置
至此,就已经完成了所有配置。正常的话你的网站就可以用https
访问了,本博域名https://www.xluke.info
就是采用此种方式生成的ssl证书。
还有个地方要注意的是,因为我的nginx配置文件事先已经有如下红框的配置,所以证书文件一旦生成之后,就可以访问成功了。但如果你没有这些配置,那你得先手动添加下,然后重启nginx。
为方便复制粘贴,下面贴出文本代码:
x
listen 443 ssl;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
证书更新
生成的证书默认只有90天的有效期,可以使用下面这个命令,刷新证书的有效期
sudo certbot renew --dry-run
建议用定时任务,比如crontab的方式,每隔一段时间(每天或者每周都可以)执行一遍此命令,以保证证书不会过期。