- # 下载工具
- curl -so website-ssl.sh https://raw.githubusercontent.com/zxlie/website-ssl.sh/master/website-ssl.sh
- chmod 0755 website-ssl.sh
注意:此工具会使用到openssl
命令,请务必保证你的机器上已安装此工具!
首次执行website-ssl.sh
的时候,工具会自动在当前目录下创建配置文件:wsl.cnf.sh
- ./website-ssl.sh
- 或
- sh website-ssl.sh #后面命令中 ./ 皆可写成 sh
- #如果提示没有libs目录,那就先手动创建一个(mkdir libs),再执行。
得到结果:
- 您的配置文件「wsl.cnf.sh」配置不正确或还未进行配置,请检查!
1.创建目录 challenges
- mkdir challenges
2.你可用任意编辑工具打开wsl.cnf.sh
文件,针对头部的如下几个配置项进行按需配置
:
- # ************************ 配置区域 START ******************************
- # 你的ssl主目录位置
- ssl_dir="/data/self/ssl"
- # nginx中配置的,给 Let's Encrypt 验证用的
- challenges_dir="/data/self/ssl/challenges"
- # 按照你的需求进行配置,多个域名用空格分开
- websites="your-website.com www.your-website.com"
- # ************************ 配置区域 END ********************************
本工具是用Let's Encrypt
来实现的https
,所以证书的申请需要一个域名验证的过程;
也就是需要对目标站点的Nginx增加一个
location
,形如:
- # CA认证
- location ^~ /.well-known/acme-challenge/ {
- # 注:这里的$challenges_dir请替换成你自己的真实目录,如:/data/self/ssl/challenges
- alias $challenges_dir;
- try_files $uri=404; #此行有可能会导致重启nginx报错,注释掉或查询解决方法皆可
- }
- # 直接执行脚本,获取帮助信息
- ./website-ssl.sh
结果:
- 网站ssl自动化工具(v1.0)使用方法:
- usage: ./website-ssl.sh -v | csr | pem | nginx | renew | crontab | upgrade
- -v 查看工具的版本号
- csr 根据域名配置生成csr证书文件(For pem)
- pem 生成 Let's Encrypt 认可的pem证书文件
- nginx 获取nginx配置文件Demo
- renew 更新ssl证书文件
- crontab 自动更新pem证书文件的crontab任务
- upgrade 升级「website-ssl.sh」工具到最新版
pem
文件
- ./website-ssl.sh pem
- #执行的时候可能会报错,提示libs下某些文件无法找到(程序无法自动下载)
- #手动下载地址:https://github.com/zxlie/website-ssl.sh/tree/master/libs
注:这一步会自动为我们创建domain.key
文件和ssl-encrypt.pem
文件
nginx
配置的Demo
- ./website-ssl.sh nginx
注:如果自己知道怎么配置nginx,这一步都可以忽略
nginx conf
文件核心就是配置一下这个:
- server{
- listen 443 ssl;
- server_name your-website.com;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES
- ssl_prefer_server_ciphers on;
- ssl_certificate /data/self/ssl/ssl-encrypt.pem;
- ssl_certificate_key /data/self/ssl/domain.key;
- ssl_session_timeout 5;
- ...
- }
nginx
配置文件,https
完美启用
- service nginx reload
csr
文件强制更新此种情况,只针对「需要走https的域名有增减」的情况,我们可以手动执行命令来更新csr
文件:
- ./website-ssl.sh csr
只更新csr
文件是没用的,还需要再次更新pem
文件:
- ./website-ssl.sh pem
由Let's Encrypt
机构颁发的证书,默认只有90天的有效期,所以我们需要有一个证书更新的机制:
- ./website-ssl.sh renew
此命令会重新生成签名证书,并重启nginx,使得站点的https
寿命延续
当然,我们完全可以不用手动来做这件事情,用crontab
,省事又省心:
- ./website-ssl.sh crontab
把输入的内容,添加到root账号下的crontab列表中,即
- # Let’s Encrypt 签发的证书只有90天有效期,可以设置为每个月自动更新
- 0 0 1 * * cd /data/self/ssl/ && ./website-ssl.sh renew > /dev/null 2>&1
至此,可以正常使用了!
工具版本更新:
- ./website-ssl.sh upgrade
查看工具版本号:
- ./website-ssl.sh -v
- #或者
- ./website-ssl.sh version
如果使用bash website-ssl.sh
出现shell脚本执行报语法错,可以试试:
- chmod 0755 website-ssl.sh
- ./website-ssl.sh
使用./ website-ssl.sh pem
出现错误及解决方法:
1、以下是acme_tiny.py问题,重新下载替换该文件即可
2、以下是缺少扩展python-argparse, 下载安装该扩展 yum install python-argparse
或 其它安装方
3、以下是系统默认 /etc/ssl/openssl.cnf
文件问题,重命名或移动到其它地方即可
4、以下是challenges目录或其上级目录权限问题,检查并赋予目录权限即可1.更改权限 chmod dirname 权限数字,2.更改所属用户[:分组] chown dirname user[:group]
共 0 条评论