1. #!/bin/sh
  2. #
  3. # ssl 证书输出的根目录。
  4. sslOutputRoot="/etc/apache_ssl"
  5. if [ $# -eq 1 ]; then
  6. sslOutputRoot=$1
  7. fi
  8. if [ ! -d ${sslOutputRoot} ]; then
  9. mkdir -p ${sslOutputRoot}
  10. fi
  11. cd ${sslOutputRoot}
  12. echo "开始创建CA根证书..."
  13. #
  14. # 创建CA根证书,稍后用来签署用于服务器的证书。如果是通过商业性CA如
  15. # Verisign 或 Thawte 签署证书,则不需要自己来创建根证书,而是应该
  16. # 把后面生成的服务器 csr 文件内容贴入一个web表格,支付签署费用并
  17. # 等待签署的证书。关于商业性CA的更多信息请参见:
  18. # Verisign - http://digitalid.verisign.com/server/apacheNotice.htm
  19. # Thawte Consulting - http://www.thawte.com/certs/server/request.html
  20. # CertiSign Certificadora Digital Ltda. - http://www.certisign.com.br
  21. # IKS GmbH - http://www.iks-jena.de/produkte/ca /
  22. # Uptime Commerce Ltd. - http://www.uptimecommerce.com
  23. # BelSign NV/SA - http://www.belsign.be
  24. # 生成CA根证书私钥
  25. openssl genrsa -des3 -out ca.key 1024
  26. # 生成CA根证书
  27. # 根据提示填写各个字段, 但注意 Common Name 最好是有效根域名(如 zeali.net ),
  28. # 并且不能和后来服务器证书签署请求文件中填写的 Common Name 完全一样,否则会
  29. # 导致证书生成的时候出现
  30. # error 18 at 0 depth lookup:self signed certificate 错误
  31. openssl req -new -x509 -days 365 -key ca.key -out ca.crt
  32. echo "CA根证书创建完毕。"
  33. echo "开始生成服务器证书签署文件及私钥 ..."
  34. #
  35. # 生成服务器私钥
  36. openssl genrsa -des3 -out server.key 1024
  37. # 生成服务器证书签署请求文件, Common Name 最好填写使用该证书的完整域名
  38. # (比如: security.zeali.net )
  39. openssl req -new -key server.key -out server.csr
  40. ls -altrh  ${sslOutputRoot}/server.*
  41. echo "服务器证书签署文件及私钥生成完毕。"
  42. echo "开始使用CA根证书签署服务器证书签署文件 ..."
  43. #
  44. # 签署服务器证书,生成server.crt文件
  45. # 参见 http://www.faqs.org/docs/securing/chap24sec195.html
  46. #  sign.sh START
  47. #
  48. #  Sign a SSL Certificate Request (CSR)
  49. #  Copyright (c) 1998-1999 Ralf S. Engelschall, All Rights Reserved.
  50. #
  51. CSR=server.csr
  52. case $CSR in
  53. *.csr ) CERT="`echo $CSR | sed -e 's/\.csr/.crt/'`" ;;
  54. * ) CERT="$CSR.crt" ;;
  55. esac
  56. #   make sure environment exists
  57. if [ ! -d ca.db.certs ]; then
  58. mkdir ca.db.certs
  59. fi
  60. if [ ! -f ca.db.serial ]; then
  61. echo '01' >ca.db.serial
  62. fi
  63. if [ ! -f ca.db.index ]; then
  64. cp /dev/null ca.db.index
  65. fi
  66. #   create an own SSLeay config
  67. # 如果需要修改证书的有效期限,请修改下面的 default_days 参数.
  68. # 当前设置为10年.
  69. cat >ca.config <<EOT
  70. [ ca ]
  71. default_ca  = CA_own
  72. [ CA_own ]
  73. dir = .
  74. certs   = ./certs
  75. new_certs_dir   = ./ca.db.certs
  76. database    = ./ca.db.index
  77. serial  = ./ca.db.serial
  78. RANDFILE    = ./ca.db.rand
  79. certificate = ./ca.crt
  80. private_key = ./ca.key
  81. default_days    = 3650
  82. default_crl_days    = 30
  83. default_md  = md5
  84. preserve    = no
  85. policy  = policy_anything
  86. [ policy_anything ]
  87. countryName = optional
  88. stateOrProvinceName = optional
  89. localityName    = optional
  90. organizationName    = optional
  91. organizationalUnitName  = optional
  92. commonName  = supplied
  93. emailAddress    = optional
  94. EOT
  95. #  sign the certificate
  96. echo "CA signing: $CSR -> $CERT:"
  97. openssl ca -config ca.config -out $CERT -infiles $CSR
  98. echo "CA verifying: $CERT <-> CA cert"
  99. openssl verify -CAfile ./certs/ca.crt $CERT
  100. #  cleanup after SSLeay
  101. rm -f ca.config
  102. rm -f ca.db.serial.old
  103. rm -f ca.db.index.old
  104. #  sign.sh END
  105. echo "使用CA根证书签署服务器证书签署文件完毕。"
  106. # 使用了 ssl 之后,每次启动 apache 都要求输入 server.key 的口令,
  107. # 你可以通过下面的方法去掉口令输入(如果不希望去掉请注释以下几行代码):
  108. echo "去除 apache 启动时必须手工输入密钥密码的限制:"
  109. cp -f server.key server.key.org
  110. openssl rsa -in server.key.org -out server.key
  111. echo "去除完毕。"
  112. # 修改 server.key 的权限,保证密钥安全
  113. chmod 400 server.key
  114. echo "Now u can configure apache ssl with following:"
  115. echo -e "\tSSLCertificateFile ${sslOutputRoot}/server.crt"
  116. echo -e "\tSSLCertificateKeyFile ${sslOutputRoot}/server.key"
  117. #  die gracefully
  118. exit 0

SSL自签署证书生成脚本相关推荐

  1. Shell脚本实现生成SSL自签署证书

    这篇文章主要介绍了Shell脚本实现生成SSL自签署证书,本文直接给出实现代码,代码中包含大量注释,需要的朋友可以参考下 启用 apache 的 mod_ssl 之后需要有证书才能正常运作.写了个脚本 ...

  2. linux生成ssl申请文件,Shell脚本实现生成SSL自签署证书

    #!/bin/sh # # ssl 证书输出的根目录. sslOutputRoot="/etc/apache_ssl" if [ $# -eq 1 ]; then sslOutpu ...

  3. python 数字证书模拟登录_用于生成WebService使用的数字证书及签署证书.python脚本...

    #! /bin/env python # -*- encoding:gbk -*- """ 用于生成 WebService 使用的 CA 及并且签署证书 "&q ...

  4. SSL/TLS加密证书生成(一)

    client为Nxlog或者rsyslog的server和client证书生成 生成证书应该是在server端生成的,server和client的证书都是在server端生成,生成的命令如下: 1.生 ...

  5. GmSSL证书生成及验证C/S通信双向认证

    1.https://github.com/guanzhi/GmSSL下载源码,解压后到源码目录下执行以下命令:   ./config   make   make install   //必须安装,否则 ...

  6. SSL安全证书生成及概念解释

    SSL安全证书-概念解析 一.关于证书 数字证书是一种认证机制.简单点说,它代表了一种由权威机构颁发授权的安全标志. 由来 在以前,传统网站采用HTTP协议进行数据传输,所有的数据几乎都用的明文,很容 ...

  7. 免费生成SSL泛解析证书

    免费生成SSL泛解析证书 1.前置条件 1.1.域名已备案 1.2.要申请证书的域名可以正常访问 1.3.一台LInux服务器 1.4.域名已挂载到腾讯云CDN(并非必须是鹅厂CDN解析平台.其他平台 ...

  8. Let's Encrypt证书生成,certbot-auto 生成ssl通用证书 配置https 自动续期

    Let's Encrypt是一个 CA 机构,但这个 CA 机构是免费的!!!签发证书不需要任何费用, 为了实现通配符证书,Let's Encrypt 对 ACME 协议的实现进行了升级,只有 v2 ...

  9. java代码实现证书生成客户端证书 实现ssl双向认证

    目的:实现web项目的ssl双向认证客户端证书代码生成. 使用openssl生成ca证书和服务端证书,当然也可以通过代码实现 1)创建CA私钥,创建目录ca openssl genrsa -out c ...

  10. ssl证书生成 详细流程

    ssl证书生成 详细流程 SSL单向认证概念 1 keystore以及服务器密钥对儿的生成 2 验证新生成的keystore文件以及证书信息 3 导出公钥证书 4 Truststore的生成以及公钥证 ...

最新文章

  1. PHP 利用AJAX获取网页并输出(原创自Zjmainstay)
  2. python获取系统时间函数_Python常用时间操作总结【取得当前时间、时间函数、应用等】...
  3. 特征工程(part4)--特征缩放:tf-idf
  4. java 中的 io 系统总结
  5. 某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1。使用非递归的算法求解满足要求的n值的程序。
  6. TechDay实录|摘取皇冠上的明珠,中文NLP的不二选择——PaddlePaddle
  7. 模版 ----- 整数二分
  8. 达内java实训总结_Java核心技术点小结
  9. 职业学校计算机教师履职总结,中等职业学校骨干教师(计算机应用专业)省级培训 总结...
  10. 嵌入式系统应用开发—FPGA开发板—一位全加器仿真测试
  11. SQL Server 使用SQL获取建表语句
  12. EXCEL数组公式(6),注意聚合函数在数组公式中的用法
  13. openGauss和PostgreSQL的源码目录结构对比
  14. win7无法连接虚拟磁盘服务器,win7系统电脑打开磁盘管理出现“无法连接虚拟磁盘服务”的解决方法...
  15. JS面试题汇总(六)
  16. 如何写一篇可实施的技术方案?
  17. Rocchio算法( pronounced Rockey-O)二分类
  18. HTML+CSS+JQ实现图片轮播效果
  19. 强哥语录摘抄(郑强教授)
  20. Robolectric单元测试 - Android Could not determine artifacts for XXXX: Skipped due to earlier error

热门文章

  1. 【深度解析】Google第二代深度学习引擎TensorFlow开源
  2. JAVA(int...i)问题
  3. Ext中extend
  4. 【Docker篇之三】Dockerfile创建镜像
  5. docker管理神器—kubernetes—直接路由篇
  6. 解决Eclipse出现的Failure to transfer ... jar问题
  7. H5 data-* 属性,设置获取方法总结
  8. HttpClient配置
  9. SSDP:DDoS***的“新宠”
  10. 感觉文章和回复都不错,转载了---用正则表达式找出不包含连续字符串abc的单词...