分类: 服务器与代理 发表时间: 2019年11月05日

标题: 为域名申请https证书

摘要: 通过acme.sh来为域名申请https证书,该脚本会通过Let's Encrypt组织来申请免费的https证书,适用于个人域名支持https协议

准备工作

  • 一个属于你的域名
  • 一个属于你的服务器
  • 为该域名添加一个A类型的解析记录到服务器ip
  • 为服务器开放80端口访问

安装acme.sh脚本

该脚本的github地址https://github.com/Neilpang/acme.sh

通过官方提供的安装脚本来安装:curl https://get.acme.sh | sh,执行该命令后会在家目录下创建一个隐藏目录.acme.sh,该工具所有的文件都存在与该目录中,包括之后申请下来的https证书也在这个目录中

申请https证书

acme.sh脚本支持非常丰富的证书申请方式,并且支持自动续期,下面简要介绍其中比较常用的几种

通过nginx快速申请

在服务器安装了nginx的情况下,acme.sh脚本支持通过nginx来验证你的域名及服务器所有权,要通过nginx来辅助验证,首先我们需要将待验证域名配置到nginx中,我们不需要使该域名存在实际站点,只需要能够访问到nginx的默认页就行了,简单配置可以修改/etc/nginx/site-enables/default文件,在server_name列表中加入你的目标域名

之后我们通过命令/root/.acme.sh/acme.sh --issue -d your_host --nginx来为your_host申请一个https证书,申请过程中该脚本会自动处理nginx的配置并在结束后还原

在服务器80端口开放以及nginx配置正确的情况下,申请完成后会在/root/.acme.sh目录中生成https证书,该证书会以域名为目录名存放,例如申请的域名为your_host,那么证书存放在/root/.acme.sh/your_host目录下

通过apache快速申请

acme.sh也支持通过apache辅助申请,该申请过程与nginx相似,只需要把对nginx的配置改为对apache的配置,之后通过命令/root/.acme.sh/acme.sh --issue -d your_host --apache来为域名申请证书,申请成功之后的存放位置与nginx申请时一样

不使用nginx或apache来申请证书

acme.sh也支持不通过以上两个服务来申请证书,其本身支持模拟一个web服务器的行为,在80端口上启动监听来验证服务器,我们可以直接通过命令/root/.acme.sh/acme.sh --issue -d your_host --standalone命令来启动模拟web服务器并申请证书,申请后证书存放位置与nginx方式申请一样

不过要注意这样申请的情况下acme.sh脚本不会维持该模拟web服务器的监听,以后在需要为域名续期时需要重新手动执行

生成private.key与fullchain.pem

通过acme.sh脚本申请的https证书不包含nginx需要的private.key与fullchain.pem文件,我们可以通过命令/root/.acme.sh/acme.sh --installcert -d your_host --key-file /root/.acme.sh/your_host/private.key --fullchain-file /root/.acme.sh/your_host/fullchain.pem命令来生成