shell脚本练习(autocert)
- #!/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)的更多相关文章
- 第一个shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...
- 使用C#给Linux写Shell脚本
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...
- shell脚本规划化模板
shell脚本规划化模板 Linux运维过程中,shell脚本是不可缺少的工具,但是每个运维人员编程的习惯都不一样,很多时候就是实现某个功能,写出来的脚本都是烂七八糟的.脚本必须规范化,应该从以后几个 ...
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
- Linux Shell脚本逻辑操作符简介
在写程序时,会用到条件判断,测试条件是否成立.很多时候,判断条件是多个的,这个时候需要用到逻辑操作符.shell脚本中常用的有哪些逻辑操作符呢? 1.逻辑与: -a 格式: conditon1 -a ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
随机推荐
- Angry Professor
def main(): t = int(raw_input()) for _ in range(t): n, k = map(int, raw_input().strip().split(' ')) ...
- IC封装图片认识(一):BGA
在上篇文章<常用IC封装技术介绍>第一个提到的IC封装形式就是BGA,全称是Ball Grid Array(球栅阵列结构的PCB),它是集成电路采用有机载板的一种封装法.其具有以下五个特点 ...
- SSL和SSH和OpenSSH,OpenSSL有什么区别
ssl是通讯链路的附加层.可以包含很多协议.https, ftps, ..... ssh只是加密的shell,最初是用来替代telnet的.通过port forward,也可以让其他协议通过ssh的隧 ...
- Android CursorAdapter
CursorAdapter 继承于BaseAdapter是个虚类,它为cursor和ListView提供了连接的桥梁. public abstract class Cur ...
- OpenWRT 编译 error GNU libiconv not in use but included iconv.h is from...
OpenWRT 编译 error GNU libiconv not in use but included iconv.h is from... 编译的时候碰到一个常见的错误,但是却在一个陌生的地方爆 ...
- 系统监控的工具tsar
近期一直在折腾着elasticsearch,需要对硬件进行评估 大概几方面 内存 cpu 硬盘 网络. iostat vmstat top 几个命令用了一堆,其实需要关注的几个点只要都列出来就可以了 ...
- 【转】ARM Linux 3.x的设备树(Device Tree)
原文网址:http://blog.csdn.net/21cnbao/article/details/8457546 1. ARM Device Tree起源 Linus Torvalds在201 ...
- Linux 通过HTTP进行域名更新
一.3322动态域名更新接口 接口地址 API URL http://members.3322.net/dyndns/update HTTP请求 GET /dyndns/update?hostname ...
- poj 3616 Milking Time(dp)
Description Bessie ≤ N ≤ ,,) hours (conveniently labeled ..N-) so that she produces as much milk as ...
- linux下部署svn服务器
系统Linux debian 2.6.32-5-686 先安装svn工具:apt-get install subversion,耐心等待安装完成.安装完成后svn客户端.服务器都有了. 接者建立svn ...