1. #!/bin/bash
  2. #author Sun Ying
  3. #date:2015-12-17
  4. if [ $# -lt 1 ];then
  5. echo -e "\033[34mUsage: `basename $0` -h|--help for help\033[0m"
  6. exit 0
  7. fi
  8. [ -e ./CA_config ] && source ./CA_config
  9. ERRLOG=`date +%Y%H%M`.log
  10. PASSWORD=${PASSWORD-"1234"}
  11. CO_S=${CN_S-"CN"}
  12. ST_S=${ST_S-"BJ"}
  13. LO_S=${LO_S-"BJ"}
  14. OG_S=${OG_S-"Centos"}
  15. OU_S=${OU_S-"Linux"}
  16. HS_S=${HS_S-"centos.example.com"}
  17. CO_C=${CN_C-"CN"}
  18. ST_C=${ST_C-"LN"}
  19. LO_C=${LO_C-"SY"}
  20. OG_C=${OG_C-"Client1"}
  21. OU_C=${OU_C-"Operation System"}
  22. HS_C=${HS_C-"client1.example.com"}
  23. DAYS=${DAYS-"365"}
  24. P_KEY=${P_KEY-/etc/pki/CA/private/cakey.pem}
  25. CACERT=${CACERT-/etc/pki/CA/cacert.pem}
  26. M_SIZE=${M_SIZE-"2048"}
  27. CSR_pem=${CSR_pem-/etc/pki/CA/newcerts/${HOSTNAME}.csr}
  28. S_DAYS=${S_DAYS-365}
  29. DIR_F=/etc/pki/CA
  30. umask=077
  31. [ ! -d /tmp/CA ] && mkdir -p /tmp/CA/
  32. touch /tmp/CA/$ERRLOG
  33. V_Key(){
  34. if [ -f $temp ]; then
  35. openssl rsa -noout -text -in $temp
  36. else
  37. echo -e "\033[32mYou must assign a private Key with parameter -v|--verify\033[0m"
  38. exit 3
  39. fi
  40. }
  41. V_Cert(){
  42. if [ -f $temp ]; then
  43. openssl x509 -noout -text -in $temp
  44. else
  45. echo -e "\033[32mYou must assign a cert file with parameter -k|--check\033[0m"
  46. exit 3
  47. fi
  48. }
  49. V_Csr(){
  50. if [ -f $temp ]; then
  51. openssl req -noout -text -in $temp
  52. else
  53. echo -e "\033[32mYou must assign a CSR file with parameter -i|--identify\033[0m"
  54. exit 3
  55. fi
  56. }
  57. genPriKey(){
  58. [ -e $P_KEY ] && rm -f $P_KEY
  59. openssl genrsa -des3 -passout pass:$PASSWORD -out $P_KEY $M_SIZE >>/tmp/CA/$ERRLOG 2>&1
  60. if [ $? -eq 0 ];then
  61. echo -e "Create private key in $P_KEY \033[033msuccess\033[0m"
  62. else
  63. echo "please check the error log under /tmp/CA/$ERRLOG"
  64. exit 1
  65. fi
  66. }
  67. selfSign(){
  68. [ -e $CACERT ] && rm -f $CACERT
  69. if [ ! -e $P_KEY ] ;then
  70. echo "Please create the private key first"
  71. exit 1
  72. fi
  73. 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
  74. if [ $? -eq 0 ];then
  75. echo -e "Self Sign ROOT CA in $CACERT \033[033msuccess\033[0m"
  76. else
  77. echo "please check the error og under /tmp/CA/$ERRLOG"
  78. exit 2
  79. fi
  80. }
  81. CSR_P(){
  82. [ -e $CSR_pem ] && rm -f $CSR_pem
  83. 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
  84. if [ $? -eq 0 ];then
  85. echo -e "Create the CSR under $CSR_pem \033[033msuccess\033[0m"
  86. else
  87. echo "please check the error log under /tmp/CA/$ERRLOG"
  88. exit 3
  89. fi
  90. }
  91. Cat_CA(){
  92. [ -e /root/ca.config ] && rm -f /root/ca.config
  93. cat > /root/ca.config <<EOF
  94. [ ca ]
  95. default_ca = CA_own
  96. [ CA_own ]
  97. dir = /etc/pki/CA
  98. certs = \$dir/certs
  99. new_certs_dir = \$dir/newcerts
  100. database = \$dir/index.txt
  101. serial = \$dir/serial
  102. RANDFILE = \$dir/private/.rand
  103. certificate = \$dir/cacert.pem
  104. private_key = \$dir/private/cakey.pem
  105. default_days = 3650
  106. default_crl_days = 30
  107. default_md = md5
  108. preserve = no
  109. policy = policy_anything
  110. [ policy_anything ]
  111. countryName = optional
  112. stateOrProvinceName = optional
  113. localityName = optional
  114. organizationName = optional
  115. organizationalUnitName = optional
  116. commonName = supplied
  117. emailAddress = optional
  118. [req]
  119. x509_extensions =v3_ca
  120. [v3_ca]
  121. subjectKeyIdentifier = hash
  122. authorityKeyIdentifier = keyid:always,issuer
  123. basicConstraints = critical, CA:true
  124. keyUsage = critical, digitalSignature, cRLSign, keyCertSign
  125. EOF
  126.  
  127. if [ $? -eq 0 ]; then
  128. echo -e "Create configuration file on /root/ca.config \033[033msuccess\033[0m"
  129. else
  130. echo -e "Create configuration file on /root/ca.config \033[031failed\033[0m"
  131. fi
  132. }
  133. Sign_v3(){
  134. openssl req -in $temp -noout -text >> /tmp/CA/$ERRLOG 2>&1
  135. if [ $? -eq 0 ] ;then
  136. Cat_CA
  137. [ ! -f $DIR_F/index.txt ] && touch $DIR_F/index.txt
  138. if [ ! -f $DIR_F/serial ];then
  139. touch $DIR_F/serial
  140. echo 01 > $DIR_F/serial
  141. fi
  142. 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
  143. if [ $? -eq 0 ];then
  144. echo -e "Create the cert file on ${temp}_V3.crt \033[033msuccess\033[0m"
  145. else
  146. echo -e "Cannot Create the Cert file. Please check the error under /tmp/CA/$ERRLOG"
  147. exit 4
  148. fi
  149. else
  150. echo -e "\033[32mYou must assign a CSR file with parameter -s3|--sign3\033[0m"
  151. exit 5
  152. fi
  153. }
  154. Trans_key(){
  155. openssl rsa -passin pass:$PASSWORD -noout -text -in $temp > /dev/null 2>/tmp/CA/$ERRLOG
  156. if [ $? -eq 0 ];then
  157. openssl rsa -passin pass:$PASSWORD -in $temp -out ${temp}.key
  158. echo -e "Create the ${temp}.key \033[033msuccess\033[0m"
  159. else
  160. echo -e "\033[32mYou must assign a CSR file with parameter -t|--trans\033[0m"
  161. exit 5
  162. fi
  163.  
  164. }
  165. Sign_CSR(){
  166. openssl req -in $temp -noout -text >> /tmp/CA/$ERRLOG 2>&1
  167. if [ $? -eq 0 ]; then
  168. [ ! -f $DIR_F/index.txt ] && touch $DIR_F/index.txt
  169. if [ ! -f $DIR_F/serial ];then
  170. touch $DIR_F/serial
  171. echo 01 > $DIR_F/serial
  172. fi
  173. openssl x509 -req -in $temp -CA $CACERT -CAkey $P_KEY -CAcreateserial -passin pass:$PASSWORD -out $temp.crt >>/tmp/CA/$ERRLOG 2>&1
  174. if [ $? -eq 0 ];then
  175. echo -e "Create the cert file on $temp.crt \033[033msucess\033[0m"
  176. else
  177. echo -e "Cannot Create the Cert file. Please check the error under /tmp/CA/$ERRLOG"
  178. exit 4
  179. fi
  180. else
  181. echo -e "\033[32mYou must assign a CSR file with parameter -s|--sign\033[0m"
  182. exit 6
  183. fi
  184.  
  185. }
  186. Revoke_cert (){
  187. if [ -f $temp ];then
  188. openssl ca -revoke $temp >>/tmp/CA/$ERRLOG 2>&1
  189. if [ $? -eq 0 ];then
  190. echo -e "Revoke the cert file $temp \033[033msucess\033[0m"
  191. else
  192. echo -e "Cannot Revoke the cert file,please check the /tmp/CA/$ERRLOG"
  193. exit 4
  194. fi
  195. else
  196. echo -e "\033[32mYou must assign a Cert file with parameter -e|--revoke\033[0m"
  197. exit 6
  198. fi
  199. }
  200.  
  201. help_P(){
  202. echo -e "\033[34mUsage: `basename $0`\033[031m [option] [file]\033[0m"
  203. echo -e " \033[32m-h|--help : usage for help page\033[0m"
  204. echo -e " \033[32m-c|--ca: usage to sign self root CA certification\033[0m"
  205. echo -e " \033[32m-p|--private: usage to generate a private key\033[0m"
  206. echo -e " \033[32m-r|--request: usage to create a CSR request\033[0m"
  207. echo -e " \033[32m-s|--sign: usage to sign a Certification\033[0m"
  208. echo -e " \033[32m-s3|--sign3: usage to sign v3 Certification\033[0m"
  209. echo -e " \033[32m-v|--verify: usage to verify a private key\033[0m"
  210. echo -e " \033[32m-i|--identify: usage to verify a CSR file\033[0m"
  211. echo -e " \033[32m-k|--check: usage to verify a Certication file\033[0m"
  212. echo -e " \033[32m-t|--trans: usage to trans a private key with pass to no pass\033[0m"
  213. exit 0
  214. }
  215. while [ $# -ge 1 ]; do
  216. case $1 in
  217. -p|--private)
  218. genPriKey
  219. shift
  220. ;;
  221. -c|--ca)
  222. selfSign
  223. shift
  224. ;;
  225. -r|--request)
  226. CSR_P
  227. shift
  228. ;;
  229. -s3|--sign3)
  230. temp=$2
  231. Sign_v3
  232. rm /root/ca.config
  233. shift 2
  234. ;;
  235. -s|--sign)
  236. temp=$2
  237. Sign_CSR
  238. shift 2
  239. ;;
  240. -v|--verfiy)
  241. temp=$2
  242. temp=${temp:-null}
  243. V_Key
  244. shift 2
  245. ;;
  246. -i|--identify)
  247. temp=$2
  248. temp=${temp:-null}
  249. V_Csr
  250. shift 2
  251. ;;
  252. -k|--check)
  253. temp=$2
  254. temp=${temp:-null}
  255. V_Cert
  256. shift 2
  257. ;;
  258. -e|--revoke)
  259. temp=$2
  260. Revoke_cert
  261. shift 2
  262. ;;
  263. -h|--help)
  264. help_P
  265. shift
  266. ;;
  267. -t|--trans)
  268. temp=$2
  269. Trans_key
  270. shift 2
  271. ;;
  272. *)
  273. echo -e "\033[34mUsage: `basename $0` -h|--help for help\033[0m"
  274. exit 0
  275. ;;
  276. esac
  277. done
  278.  
  279. [ -e /tmp/CA/$ERRLOG ] && rm /tmp/CA/$ERRLOG

  默认配置

  1. ############configuration for the server side###########
  2. ##define private Key password
  3. PASSWORD=1234
  4. ##define the valid days
  5. DAYS=3650
  6. ##define the DN info
  7. CO_S=CN
  8. ST_S=BJ
  9. LO_S=BJ
  10. OG_S=Centos
  11. OU_S=Linux
  12. HS_S=centos.example.com
  13. ##define the Private Key Path
  14. P_Key=/etc/pki/CA/private/cakey.pem
  15. ##define the CA Path
  16. CACERT=/etc/pki/CA/cacert.pem
  17.  
  18. ############configuration for the request CSR############
  19. ##define the DN info########
  20. CO_C=CN
  21. ST_C=LN
  22. LO_C=DL
  23. OG_C=server
  24. OU_C="Operation System"
  25. 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. [java]wordcount程序

    词数统计系统. 作业解析:这次作业的内容是从本地读取一个程序代码,计算出这个程序中的行数,单词数,也可进行拓展. 实现语言:java 编程思路: 程序是由各种单词和符号组成的,单词包括关键字,标识符这 ...

  2. 跟我学Windows Azure 一 创建Windows Azure试用账号

    我在网上看了很多教程,很大部分都是申请的是国外或者是香港的试用账号,而国内是由世纪互联所代理的,他的申请方式与VS2013的部署设置或多或少还是有些出入,这里我先跟大家一起过一下,在国内如何申请一个w ...

  3. 怎么样修改PHPStorm中文件修改后标签和文件名的颜色与背景色

    自从最近在PHPstrom里引入Git,并且使用MONOKAI_SUBLIME主题之后 ,当文件在PHPstrom中进行编辑,文档内容变化时,左侧项目文件列表中的文件名颜色以及右侧编辑区域标签卡的文件 ...

  4. case when

    SELECT * FROM  category  WHERE EXISTS (SELECT * FROM goods WHERE goods.cat_id = category.cat_id) cat ...

  5. [转]require(),include(),require_once()和include_once()区别

    require(),include(),require_once()和include_once()区别 面试中最容易提到的一个PHP的问题,我想和大家共勉一下: require()和include() ...

  6. (转)ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决 本篇主要讲解一下几个问题 粗略地介绍一下View的事件分发机制 解决事件滑动冲突的思路及方法 ScrollView 里面嵌 ...

  7. excel 导入数值变成科学记数的解决办法.

    string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=Yes;IM ...

  8. SQLServer count函数、cross apply和outer apply、

    1.COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)2.COUNT(*) 函数返回表中的记录数 select *   from TABLE_1 T1 outer ap ...

  9. 教你用plsql建立索引加快查询oracle数据的速度

    http://jingyan.baidu.com/article/3f16e003cb9a0f2591c10324.html?qq-pf-to=pcqq.c2c PL/SQL Developer是一个 ...

  10. 使用spring连接及操作mongodb3.0

    前边有一篇记录过不使用spring,直接在java代码中连接和操作mongodb数据库,这里就紧随其后记录一下使用spring的情况下,在java中简单操作mongodb.   maven导包配置: ...