如何用建木CI创建SSL证书并部署到nginx
介绍
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,为了解决HTTP协议的这一缺陷,需要给http加上证书使之升级成为:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
自己和用户之间的信息怎么能被别人偷听呢,所以我们要为自己的网站添加一层“保护罩”(SSL/TSL)

这时你就可以选择建木CI提供的解决方案:使用acme-ssl节点快速为自己的网站添加“保护罩” !

申请域名
要向ca申请证书,首先我们得有属于自己的域名,目前支持阿里云作为DNS解析商,所以我们得向阿里云购买域名
为自己的域名申请证书
使用建木CI编排acme-ssl节点为自己的域名申请证书,关于如何安装,使用建木CI以及建木CI的相关概念的介绍,在这篇博客中写得比较详细: ,欢迎大家前去围观

定义pipeline去申请证书,
name: acme-ssl
description: acme-ssl的pip
pipeline:
acme_sh:
type: "acme_ssl_aliyun:1.0.2"
param:
# 为哪个域名申请证书
domain: "*.huangxi.asia"
# 填写自己的email
email: "1014231151@qq.com"
# 阿里云的AccessKey, 具体获取方式请参照阿里云官网
ali_key: ((ali.key))
# 阿里云的密钥, 具体获取方式请参照阿里云官网
ali_secret: ((ali.secret))
# 是否通过公共dns进行检查. 若为true, 则等待20秒, acme.sh将使用cloudflare公共dns或google dns检查记录是否生效。
# 若参数为false, acme.sh将等待10秒,啥事也不干,在测试阶段,我们将此值置为false,就不用去公共dns检查了
dns_check: false
# 选择CA机构,支持的ca,可为letsencrypt、letsencrypt_test、buypass、buypass_test、zerossl、sslcom。
# 默认为zerossl,并且buypass、buypass_test、sslcom为收费的CA机构
ca: "zerossl"
# 以下为两个节点是复制数据节点,目的在于将生成的私钥和证书到我们的服务器中
scp_cert:
type: scp_resouce:1.1.0
param:
# 目标服务器的主机ip
ssh_ip: xxx.xxx.xxx.xxx
# 服务器私钥
ssh_private_key: ((xxx.server_private_key))
# 同步到目标服务器的哪个文件夹, 如果目标服务器无此文件夹,会自动创建并同步
remote_file: /tmp/hx/fullchain.cer
# 将哪个文件同步到服务器,这里将证书同步到服务器
local_file: ${acme_sh.cer_path}
scp_key:
type: scp_resouce:1.1.0
param:
ssh_ip: xxx.xxx.xxx.xxx
ssh_private_key: ((xxx.server_private_key))
# 这里将私钥同步到服务器
remote_file: /tmp/hx/*.huangxi.asia.key
local_file: ${acme_sh.key_path}
将流程dsl复制到建木CI中,开始跑流程,而我们就等待acme-ssl节点为我们申请证书吧

经过等待,流程已经全部跑通

来到虚拟机,查看复制过来的证书和私钥,此时的心情,一个字,爽歪歪~


将证书私钥部署到服务器上
拿到证书和私钥后,我们就可以将它们部署到我们的服务器上了,这里使用nginx作为我们的web容器
安装nginx
[root@huangxi ssl]# yum -y install nginx
查看nginx的位置,我们nginx启动的二进制文件位于,配置文件位于
[root@huangxi ssl]# whereis nginx
nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man3/nginx.3pm.gz /usr/share/man/man8/nginx.8.gz
启动nginx
[root@huangxi ssl]# nginx
修改nginx的配置文件
# 在http快中添加如下配置
server {
# 开启ssl 443端口监听
listen 443 ssl;
# 对应的域名,把*.huangxi.asia改成你们自己的域名就可以了
server_name *.huangxi.asia;
# 配置从acme-ssl节点获取到证书路径
ssl_certificate /tmp/hx/ssl/fullchain.cer;
# 配置从acme-ssl节点获取到私钥路径
ssl_certificate_key /tmp/hx/ssl/*.huangxi.asia.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
server{
listen 80;
server_name huangxi.asia;
# 即使访问80端口也给他重定向到443端口
rewrite ^/(.*)$ https://*.huangxu.asia:443/$1 permanent;
}
验证nginx配置文件的配置正确与否
[root@huangxi nginx]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新加载nginx配置文件
[root@huangxi nginx]# nginx -s reload
测试证书是否生效


如上图我们访问到了nginx的默认欢迎页面,可以看到是使用https协议访问,并且证书是有效的,至此我们成功的为自己的网站添加了一层“保护罩”

本文为建木博主「Freedom」的原创投稿文章,转载请联系授权。