1: 系统环境:
1.1: 阿里云服务器, centos 系统, 使用 uname -a, 查看系统环境
本机环境
1.2: 查看 tomcat 版本, 执行 ./version.sh
tomcat 版本
1.3: 查看 nginx 版本, 执行 nginx -v
nginx 版本
说说系统的具体应用, 我的 nginx 服务器用于网站建设, 放了好几个域名, 用的都是 80 端口, tomcat 服务器用于具体项目应用, 用作微信小程序的后台服务器, 用的是 8080 端口, 由于微信小程序必须使用 https 证书, 于是, 需要把 tomcat 的 8080, 转到 80 端口是应用,
例如 tomcat 有个 API:
192.168.1.125:8080/test
nginx 有个域名:
http://www.bore.net
那我们需要做的
https://www.bore.net/test
这也是小程序要求的
2: 系统目录, 每个人的目录不一样, 将下载的工具放在该文件夹下
我的工具目录
工具目录需要对应好, 在写脚本的时候, 需要获取目录, 才能一一对应, 脚本才可以使用
3: 部署 Let's Encrypt
3.1: 下载 certbot-auto, 使用命令
wget https://dl.eff.org/certbot-auto
3.2: 先设置为可执行, 再运行命令, 两条命令
- chmod a+x certbot-auto
- ./certbot-auto
3.3: 如何执行时候, 发现执行过慢, 可更换安装源, 如何速度还可以, 就跳过这步
- vi~/.pip/pip.conf
- # 如果文件不存在则创建
- mkdir ~/.pip
- vi pip.conf
在里面修改或写入下面内容
- [global]
- index-url= http://mirrors.aliyun.com/pypi/simple/
- [install]
- trusted-host=mirrors.aliyun.com
重新执行自动部署
./certbot-auto
4: 安装过程
4.1: 选择 https 服务器, 可以选择 apache 和 nginx, 我的是 nginx, 于是就选择 2
选择 nginx
4.2: 选择要加密的 https 网站
选择 3 号网站域名
本人有 3 个网站, 目前对 3 号域名进行 https 安全访问
4.3 安装证书结果
安装结果
4.4: 由上面的信息看到, 我们的安装信息是不完整的, 有问题的, 证书也没成功, 解决方式如下:
对于 Nignx ,certbot 使用 webroot 的插件获取 SSL 这款插件会在 [your webroot path]/.well-known 生成特殊的文件, 在申请证书时, Let's Encrypt 服务会通过 Http 来访问此文件, 以签证服务器, 所以在使用 certbot 获取证书之前, 你需要确保此目录能被外界使用访问
可以先不修改 nginx 的配置, 继续往下走, 如果获取证书过程中提示无法访问 /.well-known, 才去修改 nginx 的配置文件 nginx.conf, 在 server 块里添加如下代码
需要增加代码段
然后, 重启或 reload nginx, 即 sudo service nginx restart
4.5 重新执行 ./certbot-auto, 进行自动部署
部署成功
5: 证书文件
最终会在 /etc/letsencrypt/live/www.abc.com(自己的域名) 下, 生成四个 PEM 文件
cert.pem: 域名证书
chain.pem:Let's Enctrypt chain certificate
fullchain.pem:cert.pem 和 chain.pem 组成
privkey.pem: 证书的私钥
执行 sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
生成 generate a strong Diffie-Hellman group, 这一步不一定要
6: 配置 web 服务, 把 tomcat 的 8080 转成 80 端口, 在 nginx 配置文件下, 修改如下信息:
把 8080 端口转成 80 端口
7: 通过 https 访问网址
https 访问网址
8: 由于证书会过期, 需要重新生成, 通过 crontab 任务来调用
crontab 要安装两个软件包:
vixie-cron 及 crontabs
直接执行
yum install vixie-cron
yum install crontabs(这句可能不需要, 但是你先试试也无关紧要)
执行命令 crontab -e
定时任务
每个月的 1 号 2 点 30 分更新证书, 更新证书之后, 重启 nginx 服务器
来源: http://www.jianshu.com/p/7487857ed1d8