#!/bin/bash
#By Spinestars
#20131118
#name:ca_cert
#certficate ca
cd /etc/pki/CA/auto
num=$RANDOM
mv ./cert.csr ./cert$num.csr
openssl ca -in ./cert$num.csr -out ./cert$num.crt
cp ./cert$num.crt /tmp/cert.crt
#!/bin/bash
#By Spinestars
#20131118
#name:create_ca
cd /etc/pki/CA
umask
openssl genrsa -out private/cakey.pem
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
[ -f index.txt ] || touch index.txt
[ -f serial ] || echo '' > serial

主体脚本:

#!/bin/bash
#By Spinestars
#20131118
#name:autocert
#create ssh_key,ssh免验证
createsshkey(){
#client --> ca_server
#本地创建私钥
ssh-keygen -t rsa -P ''
#传递到ca
ssh-copy-id -i ~/.ssh/id_rsa.pub root@$ #ca_server --> client
#远程连接到ca,并判定id_rsa是否存在,若不存在则ssh-keygen生成私钥,这里-p后面直接跟空密码可能不行,删除-p参数可以
ssh root@$ "[ -e /root/.ssh/id_rsa ] || ssh-keygen -t rsa -P ''"
#远程拉取ca的id_rsa.pub到本地~/.ssh/下,并改名为authorized_keys,同时更改权限
scp root@$:/root/.ssh/id_rsa.pub ~/.ssh/authorized_keys && chmod ~/.ssh/authorized_keys
} ca_dir="/etc/pki/CA/"
#create ca_server ca服务器创建
createca(){
echo '创建CA服务器(create ca_server)...................'
#ssh执行ca服务器上的创建ca服务器的脚本
ssh root@$ "bash $2auto/create_ca"
echo -e "ca server [\e[1;32m OK \e[0m]"
} #certficate ca 证书签署
certficate_ca(){
echo '证书签署...............'
#ssh执行ca服务器上的证书签署脚本ca_cert
ssh root@$ "bash $2auto/ca_cert"
#将生成的客户端证书复制到本地
scp root@$:/tmp/cert.crt ./
} #create client_cert 证书申请
createclicrt(){
read -p '本地证书申请(create client crt)!go on <any press> or exit <ctrl + c>!'
umask
openssl genrsa -out ./cert.key
openssl req -new -key ./cert.key -out ./cert.csr
#将本地生成的csr申请传送到ca服务器的/etc/pki/CA/auto目录内
scp ./cert.csr root@$:$2auto
#调用证书签署函数
certficate_ca $ $
[ -e cert*.crt ] &&
echo -e "申请成功(client crt) [\e[1;32m OK \e[0m]" ||
echo -e "申请失败(client crt) [\e[1;31m Failure \e[0m]"
}
#ca服务器ip地址
echo 'Please su - to root!'
read -p '输入CA服务器地址(Please input ca_server_ip):' ca_ip
#ssh免验证脚本
[ -e ~/.ssh/id_rsa ] || createsshkey $ca_ip
#创建ca服务器临时目录,并传递脚本
ssh root@$ca_ip "[ -e ${ca_dir}auto ] || mkdir ${ca_dir}auto"
scp -r ./* root@$ca_ip:${ca_dir}auto
#创建ca
read -p '是否创建CA服务器(create ca_server)?[yes/no]' yn
[ $yn == 'yes' ] && createca $ca_ip $ca_dir
#证书申请
createclicrt $ca_ip $ca_dir

目的:自动创建证书.

使用方法:

web端:将三个脚本复制到同一个目录内,并改名为脚本中name后所标示的名字,并赋予执行权限.之后执行主体脚本

期间创建ca的时候,需要指定ca的ip

获取的证书,最后存放在脚本所在目录内.

shell脚本练习(autocert)的更多相关文章

  1. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  2. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

  3. shell脚本规划化模板

    shell脚本规划化模板 Linux运维过程中,shell脚本是不可缺少的工具,但是每个运维人员编程的习惯都不一样,很多时候就是实现某个功能,写出来的脚本都是烂七八糟的.脚本必须规范化,应该从以后几个 ...

  4. Shell脚本编程30分钟入门

    Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...

  5. Linux Shell脚本逻辑操作符简介

    在写程序时,会用到条件判断,测试条件是否成立.很多时候,判断条件是多个的,这个时候需要用到逻辑操作符.shell脚本中常用的有哪些逻辑操作符呢? 1.逻辑与: -a 格式: conditon1 -a ...

  6. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  7. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  8. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  9. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

随机推荐

  1. 使用Japserreport填充报表数据(3)

    E中以PDF文件的格式显示静态的中文字符串,在大多数的情况下,打印的数据来自于一些变量,在JasperReports工具中传递数据并填充到 报表只有两种方式,即使用Parameters参数和JRDat ...

  2. c语言中的结构体指针类型的cast

    1.我们在c语言中会经常碰到强制类型转换. 在这,我介绍一种结构pointer类型转换,但是有前提(有点类似于c++中的继承中的子父对象的cast). 简单的介绍一下: 首先我们要知道一个结构的指针, ...

  3. JAVA字符串转日期或日期转字符串

    文章中,用的API是SimpleDateFormat,它是属于java.text.SimpleDateFormat,所以请记得import进 来! 用法: SimpleDateFormat sdf = ...

  4. Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现

    Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现 暂时还未有时间开发这效果,所以先贴出来. 先贴一张效果图,这是一张手机截屏: 左上方的风景图:背景图片 右上方的人物图:前景图 ...

  5. PS抠图神器: KnockOut 2.0安装汉化和使用教程

    PS抠图神器: KnockOut 2.0安装汉化和使用教程 http://jingyan.baidu.com/article/6b97984d8aeadc1ca2b0bf3b.html

  6. Spiral Matrix II 解答

    Question Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral or ...

  7. OpenstackHigh-level-service

    1,yum -y install openstack-cinder;

  8. 最详细的 HTTPS 科普扫盲帖

    为什么需要https HTTP是明文传输的,也就意味着,介于发送端.接收端中间的任意节点都可以知道你们传输的内容是什么.这些节点可能是路由器.代理等. 举个最常见的例子,用户登陆.用户输入账号,密码, ...

  9. 构建高性能web站点笔记一

    构建高性能web站点笔记 第三章 服务器并发处理能力 3.1吞吐率 描述服务器在实际运行期间单位时间内处理的请求数.也就是一定并发用户的情况下,服务器处理请求能力的量化体现. 吞吐率的前提包括: 并发 ...

  10. phpcms 内部检测用户名长度更改

    <?php /*1.js部分ajax就不说了,很好改...把min  max更改下就行了具体在三个地方更改: inputValidator({min:2,max:40, //默认是20 1.会员 ...