之前装过腾讯云提供的免费ssl证书,但是没试成功。如果真就这样放弃Https,那就很瓜皮了,为了要做一个有灵性的后台,所以我最终还是找到了另外一个免费的SSL证书,哈哈,这就用起来很舒服了
证书提供
去年的时候,国内 WoSign
(沃通)还有免费的SSL证书,但是现在它已经被打压了
不过,Let's Encrypt
也正式对外颁发免费的SSL
证书
Let’s Encrypt
是一个免费、自动化、开放的证书签发服务,由 ISRG(Internet Security Research Group,译:互联网安全研究小组) 这个非盈利组织维护。现在是 Linux 基金会 (Linux Foundation) 合作的项目。
环境
服务器:Centos 7.0
服务器软件:Nginx
安装 Certbot
1 | sudo yum install certbot |
初始化验证目录
1 | mkdir -p /usr/share/nginx/certbot |
绑定 Let’s Encrypt 验证目录
进入Nginx配置目录
1 | cd /usr/local/nginx/conf |
配置nginx.conf
1 | vi nginx.conf |
只需要在 nginx 配置文件上的 server 层加上下面的代码
1 | location ^~ /.well-known/acme-challenge/ { |
重启服务器
1 | # 进入sbin目录 |
使用 certbot颁发证书
1 | sudo certbot certonly --webroot -w /usr/share/nginx/certbot -d 你的域名 |
然后第一次使用的时候,Certbot 会让你填写一个邮箱,该邮箱作为证书的拥有者,用于后面证书更新
重点是我也第一次看到命令行里还有图形界面的输入框,真是大开眼界
还有就是同意 Let's Encrypt
的使用条款,没有异议的话选择 Agree就好了
完成颁发之后,就会看到 Congratulations之类的字样
引入SSL证书并绑定443端口
还是配置nginx.conf
1 | server { |
我的配置文件最终是这样的,加了一些ssl必要的配置,可以和之前的博文对比——从头配置NodeJs和PM2
配置之后就可以重启服务器了,但是重启之后我遇到了一个问题
nginx提示缺少the "ssl" parameter requires ngx_http_ssl_module
估计是当初编译安装的时候没有加上--with-http_ssl_module
所以要重新编译
查看原来的配置参数
1 | /usr/local/nginx/sbin/nginx -V |
configure arguments:就是我原来的配置信息
加入新参数,重新编译
进入nginx源码目录
1 | cd nginx-1.10.3 |
停止nginx进程
1 | killall -9 nginx |
重新编译的代码和模块
1 | ./configure --prefix=/usr/local/nginx --with-pcre=../pcre-8.40 --with-http_ssl_module |
1 | make #编译,注意:千万别make install,否则就覆盖安装了 |
make完之后在./nginx-1.10.3/objs
目录下就多了个nginx,这个就是新版本的程序了
替换nginx二进制文件
保持当前目录不变
1 | # 先备份nginx |
开启服务器
1 | # 进入sbin目录 |
设置自动更新证书
因为 Let's Encrypt
的证书只有 3个月 有效期
所以我们需要依靠 certbot 自动更新证书
1 | certbot renew --quiet |
这样之后我们的HTTPS就完工了,快打开浏览器试一下吧!