写点什么

如何用建木 CI 创建 SSL 证书并部署到 nginx

作者:Jianmu
  • 2022 年 1 月 25 日
  • 本文字数:2335 字

    阅读完需:约 8 分钟

如何用建木CI创建SSL证书并部署到nginx

介绍

超文本传输协议 HTTP 协议被用于在 Web 浏览器和网站服务器之间传递信息,HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,为了解决 HTTP 协议的这一缺陷,需要给 http 加上证书使之升级成为:安全套接字层超文本传输协议 HTTPS,为了数据传输的安全,HTTPS 在 HTTP 的基础上加入了 SSL 协议,SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。


自己和用户之间的信息怎么能被别人偷听呢,所以我们要为自己的网站添加一层“保护罩”(SSL/TSL)



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



目前acme-ssl节点支持阿里云作为DNS服务解析商的域名创建证书,后续会加上华为云,腾讯云等。

申请域名

要向 ca 申请证书,首先我们得有属于自己的域名,目前支持阿里云作为 DNS 解析商,所以我们得向阿里云购买域名

为自己的域名申请证书

使用建木 CI 编排 acme-ssl 节点为自己的域名申请证书,关于如何安装,使用建木 CI 以及建木 CI 的相关概念的介绍,在这篇博客中写得比较详细: 基于建木CI部署maven项目 ,欢迎大家前去围观



定义 pipeline 去申请证书,


name: acme-ssldescription: acme-ssl的pippipeline: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 启动的二进制文件位于/usr/sbin/nginx,配置文件位于/etc/nginx/nginx.conf


    [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
复制代码

测试证书是否生效

打开我们的浏览器,输入www.huangxi.asia (这个地方输入自己的域名)




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



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


项⽬官⽹:https://jianmu.dev


项⽬托管:https://gitee.com/jianmu-dev


项⽬文档:https://docs.jianmu.dev


在线体验:https://ci.jianmu.dev

发布于: 刚刚阅读数: 2
用户头像

Jianmu

关注

国产开源CI/CD产品 2020.08.10 加入

建木持续集成平台基于建木,致力于为国内开发者与DevOps人员提供极致用户体验,提升开发、上线、运维的效率,让软件用户专注于提供业务价值。

评论

发布
暂无评论
如何用建木CI创建SSL证书并部署到nginx