#!/bin/bash
#author Sun Ying
#date:2015-12-17
if [ $# -lt 1 ];then
echo -e "\033[34mUsage: `basename $0` -h|--help for help\033[0m"
exit 0
fi
[ -e ./CA_config ] && source ./CA_config
ERRLOG=`date +%Y%H%M`.log
PASSWORD=${PASSWORD-"1234"}
CO_S=${CN_S-"CN"}
ST_S=${ST_S-"BJ"}
LO_S=${LO_S-"BJ"}
OG_S=${OG_S-"Centos"}
OU_S=${OU_S-"Linux"}
HS_S=${HS_S-"centos.example.com"}
CO_C=${CN_C-"CN"}
ST_C=${ST_C-"LN"}
LO_C=${LO_C-"SY"}
OG_C=${OG_C-"Client1"}
OU_C=${OU_C-"Operation System"}
HS_C=${HS_C-"client1.example.com"}
DAYS=${DAYS-"365"}
P_KEY=${P_KEY-/etc/pki/CA/private/cakey.pem}
CACERT=${CACERT-/etc/pki/CA/cacert.pem}
M_SIZE=${M_SIZE-"2048"}
CSR_pem=${CSR_pem-/etc/pki/CA/newcerts/${HOSTNAME}.csr}
S_DAYS=${S_DAYS-365}
DIR_F=/etc/pki/CA
umask=077
[ ! -d /tmp/CA ] && mkdir -p /tmp/CA/
touch /tmp/CA/$ERRLOG
V_Key(){
if [ -f $temp ]; then
openssl rsa -noout -text -in $temp
else
echo -e "\033[32mYou must assign a private Key with parameter -v|--verify\033[0m"
exit 3
fi
}
V_Cert(){
if [ -f $temp ]; then
openssl x509 -noout -text -in $temp
else
echo -e "\033[32mYou must assign a cert file with parameter -k|--check\033[0m"
exit 3
fi
}
V_Csr(){
if [ -f $temp ]; then
openssl req -noout -text -in $temp
else
echo -e "\033[32mYou must assign a CSR file with parameter -i|--identify\033[0m"
exit 3
fi
}
genPriKey(){
[ -e $P_KEY ] && rm -f $P_KEY
openssl genrsa -des3 -passout pass:$PASSWORD -out $P_KEY $M_SIZE >>/tmp/CA/$ERRLOG 2>&1
if [ $? -eq 0 ];then
echo -e "Create private key in $P_KEY \033[033msuccess\033[0m"
else
echo "please check the error log under /tmp/CA/$ERRLOG"
exit 1
fi
}
selfSign(){
[ -e $CACERT ] && rm -f $CACERT
if [ ! -e $P_KEY ] ;then
echo "Please create the private key first"
exit 1
fi
openssl req -new -x509 -passin pass:$PASSWORD -key $P_KEY -out $CACERT -days $DAYS -subj "/C=${CO_S}/ST=${ST_S}/L=${LO_S}/O=${OG_S}/OU=${OU_S} Department/CN=$HS_S" >>/tmp/CA/$ERRLOG 2>&1
if [ $? -eq 0 ];then
echo -e "Self Sign ROOT CA in $CACERT \033[033msuccess\033[0m"
else
echo "please check the error og under /tmp/CA/$ERRLOG"
exit 2
fi
}
CSR_P(){
[ -e $CSR_pem ] && rm -f $CSR_pem
openssl req -new -passin pass:$PASSWORD -key $P_KEY -out $CSR_pem -subj "/C=${CO_C}/ST=${ST_C}/L=${LO_C}/O=${OG_C}/OU=${OU_C} Department/CN=${HS_C}" >>/tmp/CA/$ERRLOG 2>&1
if [ $? -eq 0 ];then
echo -e "Create the CSR under $CSR_pem \033[033msuccess\033[0m"
else
echo "please check the error log under /tmp/CA/$ERRLOG"
exit 3
fi
}
Cat_CA(){
[ -e /root/ca.config ] && rm -f /root/ca.config
cat > /root/ca.config <<EOF
[ ca ]
default_ca = CA_own
[ CA_own ]
dir = /etc/pki/CA
certs = \$dir/certs
new_certs_dir = \$dir/newcerts
database = \$dir/index.txt
serial = \$dir/serial
RANDFILE = \$dir/private/.rand
certificate = \$dir/cacert.pem
private_key = \$dir/private/cakey.pem
default_days = 3650
default_crl_days = 30
default_md = md5
preserve = no
policy = policy_anything
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[req]
x509_extensions =v3_ca
[v3_ca]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical, CA:true
keyUsage = critical, digitalSignature, cRLSign, keyCertSign
EOF if [ $? -eq 0 ]; then
echo -e "Create configuration file on /root/ca.config \033[033msuccess\033[0m"
else
echo -e "Create configuration file on /root/ca.config \033[031failed\033[0m"
fi
}
Sign_v3(){
openssl req -in $temp -noout -text >> /tmp/CA/$ERRLOG 2>&1
if [ $? -eq 0 ] ;then
Cat_CA
[ ! -f $DIR_F/index.txt ] && touch $DIR_F/index.txt
if [ ! -f $DIR_F/serial ];then
touch $DIR_F/serial
echo 01 > $DIR_F/serial
fi
openssl ca -extensions v3_ca -passin pass:$PASSWORD -in $temp -config /root/ca.config -days $S_DAYS -out ${temp}_V3.crt -batch >>/tmp/CA/$ERRLOG 2>&1
if [ $? -eq 0 ];then
echo -e "Create the cert file on ${temp}_V3.crt \033[033msuccess\033[0m"
else
echo -e "Cannot Create the Cert file. Please check the error under /tmp/CA/$ERRLOG"
exit 4
fi
else
echo -e "\033[32mYou must assign a CSR file with parameter -s3|--sign3\033[0m"
exit 5
fi
}
Trans_key(){
openssl rsa -passin pass:$PASSWORD -noout -text -in $temp > /dev/null 2>/tmp/CA/$ERRLOG
if [ $? -eq 0 ];then
openssl rsa -passin pass:$PASSWORD -in $temp -out ${temp}.key
echo -e "Create the ${temp}.key \033[033msuccess\033[0m"
else
echo -e "\033[32mYou must assign a CSR file with parameter -t|--trans\033[0m"
exit 5
fi }
Sign_CSR(){
openssl req -in $temp -noout -text >> /tmp/CA/$ERRLOG 2>&1
if [ $? -eq 0 ]; then
[ ! -f $DIR_F/index.txt ] && touch $DIR_F/index.txt
if [ ! -f $DIR_F/serial ];then
touch $DIR_F/serial
echo 01 > $DIR_F/serial
fi
openssl x509 -req -in $temp -CA $CACERT -CAkey $P_KEY -CAcreateserial -passin pass:$PASSWORD -out $temp.crt >>/tmp/CA/$ERRLOG 2>&1
if [ $? -eq 0 ];then
echo -e "Create the cert file on $temp.crt \033[033msucess\033[0m"
else
echo -e "Cannot Create the Cert file. Please check the error under /tmp/CA/$ERRLOG"
exit 4
fi
else
echo -e "\033[32mYou must assign a CSR file with parameter -s|--sign\033[0m"
exit 6
fi }
Revoke_cert (){
if [ -f $temp ];then
openssl ca -revoke $temp >>/tmp/CA/$ERRLOG 2>&1
if [ $? -eq 0 ];then
echo -e "Revoke the cert file $temp \033[033msucess\033[0m"
else
echo -e "Cannot Revoke the cert file,please check the /tmp/CA/$ERRLOG"
exit 4
fi
else
echo -e "\033[32mYou must assign a Cert file with parameter -e|--revoke\033[0m"
exit 6
fi
} help_P(){
echo -e "\033[34mUsage: `basename $0`\033[031m [option] [file]\033[0m"
echo -e " \033[32m-h|--help : usage for help page\033[0m"
echo -e " \033[32m-c|--ca: usage to sign self root CA certification\033[0m"
echo -e " \033[32m-p|--private: usage to generate a private key\033[0m"
echo -e " \033[32m-r|--request: usage to create a CSR request\033[0m"
echo -e " \033[32m-s|--sign: usage to sign a Certification\033[0m"
echo -e " \033[32m-s3|--sign3: usage to sign v3 Certification\033[0m"
echo -e " \033[32m-v|--verify: usage to verify a private key\033[0m"
echo -e " \033[32m-i|--identify: usage to verify a CSR file\033[0m"
echo -e " \033[32m-k|--check: usage to verify a Certication file\033[0m"
echo -e " \033[32m-t|--trans: usage to trans a private key with pass to no pass\033[0m"
exit 0
}
while [ $# -ge 1 ]; do
case $1 in
-p|--private)
genPriKey
shift
;;
-c|--ca)
selfSign
shift
;;
-r|--request)
CSR_P
shift
;;
-s3|--sign3)
temp=$2
Sign_v3
rm /root/ca.config
shift 2
;;
-s|--sign)
temp=$2
Sign_CSR
shift 2
;;
-v|--verfiy)
temp=$2
temp=${temp:-null}
V_Key
shift 2
;;
-i|--identify)
temp=$2
temp=${temp:-null}
V_Csr
shift 2
;;
-k|--check)
temp=$2
temp=${temp:-null}
V_Cert
shift 2
;;
-e|--revoke)
temp=$2
Revoke_cert
shift 2
;;
-h|--help)
help_P
shift
;;
-t|--trans)
temp=$2
Trans_key
shift 2
;;
*)
echo -e "\033[34mUsage: `basename $0` -h|--help for help\033[0m"
exit 0
;;
esac
done [ -e /tmp/CA/$ERRLOG ] && rm /tmp/CA/$ERRLOG

  默认配置

############configuration for the server side###########
##define private Key password
PASSWORD=1234
##define the valid days
DAYS=3650
##define the DN info
CO_S=CN
ST_S=BJ
LO_S=BJ
OG_S=Centos
OU_S=Linux
HS_S=centos.example.com
##define the Private Key Path
P_Key=/etc/pki/CA/private/cakey.pem
##define the CA Path
CACERT=/etc/pki/CA/cacert.pem ############configuration for the request CSR############
##define the DN info########
CO_C=CN
ST_C=LN
LO_C=DL
OG_C=server
OU_C="Operation System"
HS_C=server.example.com

  

CA签发工具的更多相关文章

  1. 使用CA签发的服务器证书搭建Tomcat双向SSL认证服务

    第一部分,先说证书的申请. 这步是要到正规的CA公司申请正式的设备证书必须走的步骤. 1.先生成证书的密钥对 打开命令行,切换到某个自己新建的目录下,执行如下命令 keytool -genkey -k ...

  2. openssl 自建CA签发证书 网站https的ssl通信

    <<COMMENTX509 文件扩展名 首先我们要理解文件的扩展名代表什么.DER.PEM.CRT和CER这些扩展名经常令人困惑.很多人错误地认为这些扩展名可以互相代替.尽管的确有时候有些 ...

  3. 使用openssl模拟CA和CA证书的签发

    使用openssl模拟CA和CA证书的签发     当使用ssl/tls进行加密通信时,必须要有数字证书.若通信只限制在局域网内,可以不向第三方机构申请签发证书,可以通过openssl模拟CA(Cer ...

  4. 使用keytool工具产生带根CA和二级CA的用户证书

    使用keytool工具产生带根CA和二级CA的用户证书 1 生成根CA 1.1 生成根CA证书   根CA实际是一张自签CA,自签CA的使用者和颁发者都是它自己.使用下面的命令生成根证书,如果没有指定 ...

  5. 基于CFSSL工具创建CA证书,服务端证书,客户端证书

    背景描述 在局域网中部署组件时,想要通过证书来实现身份的认证,确保通信的安全性,可以通过cfssl工具来进行CA证书,服务端证书,客户端证书的创建. 目录 背景描述 部署cfssl工具 下载,上传cf ...

  6. 基于 OpenSSL 的 CA 建立及证书签发 【转】

    建立 CA 建立 CA 目录结构 按照 OpenSSL 的默认配置建立 CA ,需要在文件系统中建立相应的目录结构.相关的配置内容一般位于 /usr/ssl/openssl.cnf 内,详情可参见 c ...

  7. 基于 OpenSSL 的 CA 建立及证书签发

    http://rhythm-zju.blog.163.com/blog/static/310042008015115718637/ 建立 CA 建立 CA 目录结构 按照 OpenSSL 的默认配置建 ...

  8. 自建 CA 中心并签发 CA 证书

    目录 文章目录 目录 CA 认证原理浅析 基本概念 PKI CA 认证中心(证书签发) X.509 标准 证书 证书的签发过程 自建 CA 签发证书并认证 HTTPS 网站的过程 使用 OpenSSL ...

  9. 通过Go语言创建CA与签发证书

    本篇文章中,将描述如何使用go创建CA,并使用CA签署证书.在使用openssl创建证书时,遵循的步骤是 创建秘钥 > 创建CA > 生成要颁发证书的秘钥 > 使用CA签发证书.这种 ...

随机推荐

  1. 程序员写的东西出了bug,造成了损失谁来承担?

    这是个持续多年的话题了,很多大公司,尤其是牛逼的独立分包公司(开发公司)都会有代码审核和严格QA程序,一般的公司就很难说咯,在法律上目前还没有完全支持处罚程序员bug经济损失的判例(国内如此),国外也 ...

  2. Flat UI 工具包

    Flat UI是一套精美的扁平风格 UI 工具包,基于 Twitter Bootstrap 实现.这套界面工具包含许多基本的和复杂的 UI 部件,例如按钮,输入框,组合按钮,复选框,单选按钮,标签,菜 ...

  3. 对冲的艺术——delta中性交易

    delta中性交易 delta中性交易——外行话 delta中性交易就是构造一个含有期权头寸的组合,使其不受标的股票或指数价格小幅变动的影响.换句话讲,无论标的价格是涨还是跌,组合的市值始终保持不变. ...

  4. js在IE和FF下的兼容性问题

    本文出自前端档案,以作学习参考之用.自己也补充了一些内容 长久以来JavaScript兼容性一直是Web开发者的一个主要问题.在正式规范.事实标准以及各种实现之间的存在的差异让许多开发者日夜煎熬.为此 ...

  5. oracle case when

    http://www.cnblogs.com/kevin2013/archive/2010/07/02/1769682.html

  6. 使用ImageMagick的convert命令,实现批量rgb转cmyk

    因为业务上的需求,使用脚本批量生成的二维码不能直接去打印店排版印刷,必须转换为cmyk的印刷格式. 首先去http://www.imagemagick.org/下载ImageMagick并安装,这个工 ...

  7. 【性能诊断】五、并发场景的性能分析(windbg简介及dump抓取)

    windbg简介 Windbg是在windows平台下,强大的用户态和内核态调试工具.相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能 ...

  8. css 多个不定数量提交按钮居中显示,纯css解决

    前几天在公司修改一个css 多个按钮居中问题,其实这样的问题很多前端程序员都遇到过,举个例子吧: 在一行中有三个按钮或是两个按钮...个数不定,然后间距固定:然后就有很多人把所有按钮放到一个div中, ...

  9. Datatables回调函数中文

    Datatables——回调函数 ------------------------------------------------- fnCookieCallback:还没有使用过 $(documen ...

  10. APP跳到系统设置

    //定位服务设置界面 NSURL *url = [NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]; if ([[UIApp ...