接了个制作官网的任务,从搭建框架到模仿个七七八八,就剩下SSL证书申请了。先前有了解通过acme脚本自动申请SSL证书的方式,这次正好通过上手记录下部署过程中的部分点滴。
查看证书列表
acme.sh --list
删除证书
创建https失败,可删除证书重试
acme.sh remove Main_Domain(证书的主域名,删除列表中可看见)
查看定时任务
crontab -e
建立阿里云AccessKey
登陆,进入AccessKey管理
登陆阿里云账户,进入控制台
鼠标移动到 右上角,你的头像上,出现的下拉菜单里找到 AccessKey管理
找到AccessKey管理,找不到的也可以 点击这里直达
安全提示
如果你是第一次使用 AccessKey管理 , 会有安全提示
如果使用主账户创建AccessKey,将拥有该账户的全部权限
所以安全起见,推荐创建一个子账户进行后续操作
如果选 开始使用子账户AccessKey,进入 子账户创建 步骤
子账户创建
如果刚刚选了继续使用AccessKey,可以跳过次步
选 确定
选 创建用户
如果,填写登录名、显示名称、勾选编程访问,点击确定,(可能需要短信验证,这里就不截图了)
创建子账户完成,会显示AccessKey ID
和AccessKey Secret
,注意:只会显示一次,如果没保存,可以在用户管理里删除并重新创建AccessKey
点击授权
点击新增授权
被授权主题里搜索刚刚添加的用户名(cer)找到后点击
系统策略里搜索'dns',下面出现多个相关结果后,点击AliyunDNSFullAccess
,确定
子账户授权完成
主账户创建AccessKey
如果使用了子账户的方式,请跳过本步
创建AccessKey
点击可以看见AccessKey ID
和AccessKey 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 的简单对比
功能 | LE | Buypass | ZeroSSL | SSL.com | Google 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-reload
或service 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
评论区