一键搭建 CA 并申请多个证书 shell 脚本

本贴最后更新于 1618 天前,其中的信息可能已经天翻地覆

#!/bin/bash # #******************************************************************** #Author:zhangzhuo #QQ: 1191400158 #Date: 2021-01-13 #FileName:crets.sh #URL: https://www.zhangzhuo.ltd #Description:The test script #Copyright (C): 2021 All rights reserved #******************************************************************** #引用系统函数 . /etc/init.d/functions #生成创建CA所需的文件 [ ! -d /etc/pki/CA ] && mkdir -p /etc/pki/CA/{certs,crl,newcerts,private} &>/dev/null [ ! -f /etc/pki/CA/index.txt ] && touch /etc/pki/CA/index.txt [ ! -f /etc/pki/CA/serial ] && echo 00 > /etc/pki/CA/serial [ ! -f /etc/pki/CA/crlnumber ] && touch /etc/pki/CA/crlnumber #定义变量 SUBJ_SET='/C=CN/ST=neimeng/L=baotou/O=zhangzhuo/CN=www.zhangzhuo.org' #CA机构信息 DAYS_CA=3650 #定义CA自签证书有效天数 DAYS=365 #申请的CA证书有效期 APP_SUBJ='/C=CN/ST=neimeng/L=baotou/O=zhangzhuo' #机构信息需要跟CA机构信息一致 APP_NAME=("app1" "app2" "app3") #应用名称跟下面的数组对应填写,后面也是证书文件名称 APP_SUBJ_NAME=("/CN=www.zhangzhuo1.org" "/CN=www.zhangzhuo2.org" "/CN=www.zhangzhuo3.org") #要给什么主机使用域名 [ ${#APP_NAME[*]} -eq ${#APP_SUBJ_NAME[*]} ] || { echo '请检查APP_NAME和APP_SUBJ_NAME数组个数是否一样';exit; } num=`echo $[${#APP_NAME[*]}-1]` #生成CA私钥 [ ! -f /etc/pki/CA/private/cakey.pem ] && openssl req -x509 -newkey rsa:2048 -subj $SUBJ_SET -set_serial 1 -keyout /etc/pki/CA/private/cakey.pem -nodes -days $DAYS_CA -out /etc/pki/CA/cacert.pem &>/dev/null [ $? -eq 0 ] && action "CA私钥和自签名证书生成完成" #给应用申请证书 for i in `seq 0 $num`;do openssl req -newkey rsa:2048 -nodes -subj ${APP_SUBJ}${APP_SUBJ_NAME[$i]} -keyout /data/${APP_NAME[$i]}.key -out /data/${APP_NAME[$i]}.crs &>/dev/null echo -e 'y\ny\n'| openssl ca -in /data/${APP_NAME[$i]}.crs -out /etc/pki/CA/certs/${APP_NAME[$i]}.crt -days $DAYS &>/dev/null cp /etc/pki/CA/certs/${APP_NAME[$i]}.crt /data/ action "应用${APP_NAME[$i]}证书申请完成,文件在/data文件夹中" done

注意:申请证书的信息可以在变量中修改

  • SUBJ_SET 和 APP_SUBJ 需要一致。
  • APP_NAME 和 APP_SUBJ_NAME 数组需要个数一致不然会退出脚本,位置需要对应以便于自己区分
  • 创建的 CA 证书根据 APP_NAME 和 APP_SUBJ_NAME 数组的个数进行创建
  • 变量名称非必要不要修改
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖 • 3 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 829 关注
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 605 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    17 引用 • 7 回帖 • 1 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    240 引用 • 224 回帖
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    36 引用 • 200 回帖 • 32 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 737 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • OnlyOffice
    4 引用 • 18 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 504 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 464 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26005 引用 • 107895 回帖
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    198 引用 • 543 回帖 • 1 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 655 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 84 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 675 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 615 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 370 关注
  • RemNote
    2 引用 • 16 回帖 • 20 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    180 引用 • 3878 回帖
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖 • 1 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 796 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    32 引用 • 99 回帖 • 1 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 9 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 2 关注