侧边栏壁纸
博主头像
雨迹轩博主等级

行动起来,活在当下

  • 累计撰写 345 篇文章
  • 累计创建 18 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

ACME脚本申请SSL证书

雨狮
2022-08-31 / 0 评论 / 0 点赞 / 177 阅读 / 6605 字

接了个制作官网的任务,从搭建框架到模仿个七七八八,就剩下SSL证书申请了。先前有了解通过acme脚本自动申请SSL证书的方式,这次正好通过上手记录下部署过程中的部分点滴。

查看证书列表

acme.sh --list

删除证书

创建https失败,可删除证书重试

acme.sh remove Main_Domain(证书的主域名,删除列表中可看见)

查看定时任务

crontab -e

建立阿里云AccessKey

登陆,进入AccessKey管理

登陆阿里云账户,进入控制台

鼠标移动到 右上角,你的头像上,出现的下拉菜单里找到 AccessKey管理

找到AccessKey管理,找不到的也可以 点击这里直达

安全提示

如果你是第一次使用 AccessKey管理 , 会有安全提示

如果使用主账户创建AccessKey,将拥有该账户的全部权限

所以安全起见,推荐创建一个子账户进行后续操作

如果选 开始使用子账户AccessKey,进入 子账户创建 步骤

子账户创建

如果刚刚选了继续使用AccessKey,可以跳过次步

确定

创建用户

如果,填写登录名、显示名称、勾选编程访问,点击确定,(可能需要短信验证,这里就不截图了)

创建子账户完成,会显示AccessKey IDAccessKey Secret,注意:只会显示一次,如果没保存,可以在用户管理里删除并重新创建AccessKey

点击授权

点击新增授权

被授权主题里搜索刚刚添加的用户名(cer)找到后点击

系统策略里搜索'dns',下面出现多个相关结果后,点击AliyunDNSFullAccess,确定

子账户授权完成

主账户创建AccessKey

如果使用了子账户的方式,请跳过本步

创建AccessKey

点击可以看见AccessKey IDAccessKey Secret,也可以点保存AK信息下载下来,注意:只会显示一次,如果没保存,可以删除后重新创建

最后申请到的AccessKey如下

AccessKey ID:XXXXXX62xwZdio2L1KXXXXXX
AccessKey Secret:XXXXXXiZEma0eOn54QVXwq2QXXXXXX

切换CA环境

目前 acme.sh 支持四个正式环境 CA,分别是 Let’s Encrypt、Buypass、ZeroSSL 和 SSL.com,默认使用 ZeroSSL。要切换CA机构,可参考如下代码。

##切换ZeroSSL
acme.sh --set-default-ca --server zerossl
##切换Let's Encrypt
acme.sh --set-default-ca --server letsencrypt
##切换Buypass
acme.sh --set-default-ca --server buypass
##切换SSL.com
acme.sh --set-default-ca --server ssl.com

几个 CA 的简单对比

功能LEBuypassZeroSSLSSL.comGoogle Public CA
有效期90 天180 天90 天90 天90 天
多域名支持支持,最多 5 个支持收费支持支持
泛域名支持不支持支持收费支持支持
Rate Limit收费无未知
GUI 管理
ECC 证书链未知
客户支持社区收费收费收费收费

简单来说,如果没有特殊需求,可以选择 Let's Encrypt,如果服务器在国内,可以选择 ZeroSSL 或 Buypass,如果愿意付费得到更好的服务和保障,可以选择 ZeroSSL 和 SSL.com,如果面向欧盟用户,可以选择 Buypass 和 ZeroSSL。

Acme加载阿里云AccessKey

在SSH中执行下面的导入代码

export Ali_Key="XXXXXX62xwZdio2L1KXXXXXX"
export Ali_Secret="XXXXXXiZEma0eOn54QVXwq2QXXXXXX"

申请SSL证书

阿里云使用以下命令

acme.sh --issue -d winplan365.com -d *.winplan365.com --dns dns_ali

查看生成的证书文件,证书默认生成在:/root/.acme.sh/winplan365.com

证书安装

注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件,
例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件.
这里面的文件都是内部使用, 而且目录结构可能会变化.

正确的使用方法是使用 --installcert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置,

默认情况下,证书将每60天更新一次(可配置)。更新证书后,将通过以下命令自动重新加载Apache / Nginx服务:service apache2 force-reloadservice nginx force-reload

请注意:reloadcmd非常重要。证书可以自动续订,但是,如果没有正确的“reloadcmd”,证书可能无法刷新到您的服务器(如nginx或apache),那么您的网站将无法在60天内显示续订证书。

阿里云使用如下命令

# 创建放置证书的文件夹
mkdir -p /usr/local/ssl_cert/winplan365.com

# 前面证书生成以后,,需要把证书 copy 到真正需要用它的地方。
acme.sh --install-cert -d winplan365.com -d *.winplan365.com \
--key-file /usr/local/ssl_cert/winplan365.com/winplan365.com.key \
--fullchain-file /usr/local/ssl_cert/winplan365.com/winplan365.com.cer \
--reloadcmd      "service nginx force-reload"

Nginx配置

需要编辑的配置如下:

server {
        listen 80;
        server_name www.awaimai.com awaimai.com;
        rewrite ^(.*) https://www.awaimai.com$1 permanent;
}

server {
        listen       443 ssl;
        ssl          on;
        server_name  www.awaimai.com;
        root         /var/www/html/awaimai;
        index        index.php;

        ssl_certificate /etc/nginx/conf.d/ssl/awaimai.com/fullchain.cer;#证书位置
        ssl_certificate_key /etc/nginx/conf.d/ssl/awaimai.com/awaimai.key;#证书位置
        # ...
}

第一个server的作用是跳转原来http到https,

第二个server作用是侦听443端口,以及设置http证书等其他所有功能。

校验nginx配置文件中的配置是否正确

nginx -t

重启nginx

nginx -s reload
0

评论区