使用acme.sh为网站配置ssl证书

  • 使用acme.sh为网站配置ssl证书已关闭评论
  • 136 views
  • A+
所属分类:Linux 编码 网站

就目前的形式来看,今后的网站肯定是要向https发展的,再加上谷歌也要把http网站设置为不安全,所以,为网站配置一个证书是很有必要的。

证书选择的话,作为我等小屁民,当然没那个闲钱去购买收费证书,反正网上免费的也有,而且都能支持,为啥还要花钱呢?

Let's Encrypt就是一款免费证书,而且被众多厂商支持,人人都能免费申请哦!

本次就选择申请Let's Encrypt的免费证书为网站配置https,不过直接申请的话比较麻烦,还要更改DNS啊各种,很啰嗦,还好网上有专门申请此证书的shell脚本,而且能够使用文件验证的方式进行申请,很方便快捷,这就是acme.sh

登录SSH,下载并安装acme.sh脚本

curl https://get.acme.sh | sh

安装完成后会出现以下提示

[Mon Dec 18 23:37:03 CST 2017] Installing from online archive. [Mon
Dec 18 23:37:03 CST 2017] Downloading
https://github.com/Neilpang/acme.sh/archive/master.tar.gz [Mon Dec 18
23:37:08 CST 2017] Extracting master.tar.gz [Mon Dec 18 23:37:08 CST
2017] It is recommended to install socat first. [Mon Dec 18 23:37:08
CST 2017] We use socat for standalone server if you use standalone
mode. [Mon Dec 18 23:37:08 CST 2017] If you don't use standalone mode,
just ignore this warning. [Mon Dec 18 23:37:08 CST 2017] Installing to
/root/.acme.sh [Mon Dec 18 23:37:08 CST 2017] Installed to
/root/.acme.sh/acme.sh [Mon Dec 18 23:37:08 CST 2017] Installing alias
to '/root/.profile' [Mon Dec 18 23:37:08 CST 2017] OK, Close and
reopen your terminal to start using acme.sh [Mon Dec 18 23:37:08 CST
2017] Installing alias to '/root/.cshrc' [Mon Dec 18 23:37:08 CST
2017] Installing cron job [Mon Dec 18 23:37:09 CST 2017] OK [Mon Dec
18 23:37:09 CST 2017] Install success!

整个安装会将所需的脚本文件存放到/root/.acme.sh目录中,并配置环境变量,不过安装时发现环境变量不生效,所以就手动执行了一次,这样就可以在任意目录都能使用acme.sh脚本了

source /root/.cshrc

申请证书

acme.sh --issue -d www.usebsd.com -d usebsd.com --webroot /home/wwwroot/

这里注意,-d 参数是指定申请证书的域名,域名必须可以访问,且正确指向后面配置的网站目录,多个域名添加多个 -d 参数即可,--webroot 参数是指定网站存放根目录,这里一定要正确,否则将申请不到证书

当域名解析正确,网站路径指向也正确后,执行上面的命令,会在网站根目录中添加证书申请所需的验证文件,随后Let's Encrypt会对文件进行访问,验证通过就会下发网站证书

证书申请成功后,会自动保存在/root/.acme.sh/目录下,以域名为目录名进行存放,但现在还没有结束,还需要生成咱们能使用的证书

acme.sh --installcert -d www.usebsd.com -d usebsd.com --key-file /usr/local/etc/nginx/ssl/www.usebsd.com.key --fullchain-file /usr/local/etc/nginx/ssl/www.usebsd.com.cer --reloadcmd "service nginx restart"

其中 --key-file 参数和 --fullchain-file 参数一定要正确,因为会在指定位置生成证书文件,而且后期证书自动更新也是根据现在配置的命令完成的,后方的 --reloadcmd 则是证书生成后执行的重新载入nginx命令,不过nginx用reload的话不会重新读取证书,所以这里改为restart

生成dhparam,这是为了让ssllab检测能够达到A+,是否生成这个自己决定

openssl dhparam -out /usr/local/etc/nginx/ssl/www.usebsd.com.pem 2048

打开网站nginx配置文件,将证书配置进去

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin