SSL自签署证书生成脚本
- #!/bin/sh
- #
- # ssl 证书输出的根目录。
- sslOutputRoot="/etc/apache_ssl"
- if [ $# -eq 1 ]; then
- sslOutputRoot=$1
- fi
- if [ ! -d ${sslOutputRoot} ]; then
- mkdir -p ${sslOutputRoot}
- fi
- cd ${sslOutputRoot}
- echo "开始创建CA根证书..."
- #
- # 创建CA根证书,稍后用来签署用于服务器的证书。如果是通过商业性CA如
- # Verisign 或 Thawte 签署证书,则不需要自己来创建根证书,而是应该
- # 把后面生成的服务器 csr 文件内容贴入一个web表格,支付签署费用并
- # 等待签署的证书。关于商业性CA的更多信息请参见:
- # Verisign - http://digitalid.verisign.com/server/apacheNotice.htm
- # Thawte Consulting - http://www.thawte.com/certs/server/request.html
- # CertiSign Certificadora Digital Ltda. - http://www.certisign.com.br
- # IKS GmbH - http://www.iks-jena.de/produkte/ca /
- # Uptime Commerce Ltd. - http://www.uptimecommerce.com
- # BelSign NV/SA - http://www.belsign.be
- # 生成CA根证书私钥
- openssl genrsa -des3 -out ca.key 1024
- # 生成CA根证书
- # 根据提示填写各个字段, 但注意 Common Name 最好是有效根域名(如 zeali.net ),
- # 并且不能和后来服务器证书签署请求文件中填写的 Common Name 完全一样,否则会
- # 导致证书生成的时候出现
- # error 18 at 0 depth lookup:self signed certificate 错误
- openssl req -new -x509 -days 365 -key ca.key -out ca.crt
- echo "CA根证书创建完毕。"
- echo "开始生成服务器证书签署文件及私钥 ..."
- #
- # 生成服务器私钥
- openssl genrsa -des3 -out server.key 1024
- # 生成服务器证书签署请求文件, Common Name 最好填写使用该证书的完整域名
- # (比如: security.zeali.net )
- openssl req -new -key server.key -out server.csr
- ls -altrh ${sslOutputRoot}/server.*
- echo "服务器证书签署文件及私钥生成完毕。"
- echo "开始使用CA根证书签署服务器证书签署文件 ..."
- #
- # 签署服务器证书,生成server.crt文件
- # 参见 http://www.faqs.org/docs/securing/chap24sec195.html
- # sign.sh START
- #
- # Sign a SSL Certificate Request (CSR)
- # Copyright (c) 1998-1999 Ralf S. Engelschall, All Rights Reserved.
- #
- CSR=server.csr
- case $CSR in
- *.csr ) CERT="`echo $CSR | sed -e 's/\.csr/.crt/'`" ;;
- * ) CERT="$CSR.crt" ;;
- esac
- # make sure environment exists
- if [ ! -d ca.db.certs ]; then
- mkdir ca.db.certs
- fi
- if [ ! -f ca.db.serial ]; then
- echo '01' >ca.db.serial
- fi
- if [ ! -f ca.db.index ]; then
- cp /dev/null ca.db.index
- fi
- # create an own SSLeay config
- # 如果需要修改证书的有效期限,请修改下面的 default_days 参数.
- # 当前设置为10年.
- cat >ca.config <<EOT
- [ ca ]
- default_ca = CA_own
- [ CA_own ]
- dir = .
- certs = ./certs
- new_certs_dir = ./ca.db.certs
- database = ./ca.db.index
- serial = ./ca.db.serial
- RANDFILE = ./ca.db.rand
- certificate = ./ca.crt
- private_key = ./ca.key
- 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
- EOT
- # sign the certificate
- echo "CA signing: $CSR -> $CERT:"
- openssl ca -config ca.config -out $CERT -infiles $CSR
- echo "CA verifying: $CERT <-> CA cert"
- openssl verify -CAfile ./certs/ca.crt $CERT
- # cleanup after SSLeay
- rm -f ca.config
- rm -f ca.db.serial.old
- rm -f ca.db.index.old
- # sign.sh END
- echo "使用CA根证书签署服务器证书签署文件完毕。"
- # 使用了 ssl 之后,每次启动 apache 都要求输入 server.key 的口令,
- # 你可以通过下面的方法去掉口令输入(如果不希望去掉请注释以下几行代码):
- echo "去除 apache 启动时必须手工输入密钥密码的限制:"
- cp -f server.key server.key.org
- openssl rsa -in server.key.org -out server.key
- echo "去除完毕。"
- # 修改 server.key 的权限,保证密钥安全
- chmod 400 server.key
- echo "Now u can configure apache ssl with following:"
- echo -e "\tSSLCertificateFile ${sslOutputRoot}/server.crt"
- echo -e "\tSSLCertificateKeyFile ${sslOutputRoot}/server.key"
- # die gracefully
- exit 0
SSL自签署证书生成脚本相关推荐
- Shell脚本实现生成SSL自签署证书
这篇文章主要介绍了Shell脚本实现生成SSL自签署证书,本文直接给出实现代码,代码中包含大量注释,需要的朋友可以参考下 启用 apache 的 mod_ssl 之后需要有证书才能正常运作.写了个脚本 ...
- linux生成ssl申请文件,Shell脚本实现生成SSL自签署证书
#!/bin/sh # # ssl 证书输出的根目录. sslOutputRoot="/etc/apache_ssl" if [ $# -eq 1 ]; then sslOutpu ...
- python 数字证书模拟登录_用于生成WebService使用的数字证书及签署证书.python脚本...
#! /bin/env python # -*- encoding:gbk -*- """ 用于生成 WebService 使用的 CA 及并且签署证书 "&q ...
- SSL/TLS加密证书生成(一)
client为Nxlog或者rsyslog的server和client证书生成 生成证书应该是在server端生成的,server和client的证书都是在server端生成,生成的命令如下: 1.生 ...
- GmSSL证书生成及验证C/S通信双向认证
1.https://github.com/guanzhi/GmSSL下载源码,解压后到源码目录下执行以下命令: ./config make make install //必须安装,否则 ...
- SSL安全证书生成及概念解释
SSL安全证书-概念解析 一.关于证书 数字证书是一种认证机制.简单点说,它代表了一种由权威机构颁发授权的安全标志. 由来 在以前,传统网站采用HTTP协议进行数据传输,所有的数据几乎都用的明文,很容 ...
- 免费生成SSL泛解析证书
免费生成SSL泛解析证书 1.前置条件 1.1.域名已备案 1.2.要申请证书的域名可以正常访问 1.3.一台LInux服务器 1.4.域名已挂载到腾讯云CDN(并非必须是鹅厂CDN解析平台.其他平台 ...
- Let's Encrypt证书生成,certbot-auto 生成ssl通用证书 配置https 自动续期
Let's Encrypt是一个 CA 机构,但这个 CA 机构是免费的!!!签发证书不需要任何费用, 为了实现通配符证书,Let's Encrypt 对 ACME 协议的实现进行了升级,只有 v2 ...
- java代码实现证书生成客户端证书 实现ssl双向认证
目的:实现web项目的ssl双向认证客户端证书代码生成. 使用openssl生成ca证书和服务端证书,当然也可以通过代码实现 1)创建CA私钥,创建目录ca openssl genrsa -out c ...
- ssl证书生成 详细流程
ssl证书生成 详细流程 SSL单向认证概念 1 keystore以及服务器密钥对儿的生成 2 验证新生成的keystore文件以及证书信息 3 导出公钥证书 4 Truststore的生成以及公钥证 ...
最新文章
- PHP 利用AJAX获取网页并输出(原创自Zjmainstay)
- python获取系统时间函数_Python常用时间操作总结【取得当前时间、时间函数、应用等】...
- 特征工程(part4)--特征缩放:tf-idf
- java 中的 io 系统总结
- 某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1。使用非递归的算法求解满足要求的n值的程序。
- TechDay实录|摘取皇冠上的明珠,中文NLP的不二选择——PaddlePaddle
- 模版 ----- 整数二分
- 达内java实训总结_Java核心技术点小结
- 职业学校计算机教师履职总结,中等职业学校骨干教师(计算机应用专业)省级培训 总结...
- 嵌入式系统应用开发—FPGA开发板—一位全加器仿真测试
- SQL Server 使用SQL获取建表语句
- EXCEL数组公式(6),注意聚合函数在数组公式中的用法
- openGauss和PostgreSQL的源码目录结构对比
- win7无法连接虚拟磁盘服务器,win7系统电脑打开磁盘管理出现“无法连接虚拟磁盘服务”的解决方法...
- JS面试题汇总(六)
- 如何写一篇可实施的技术方案?
- Rocchio算法( pronounced Rockey-O)二分类
- HTML+CSS+JQ实现图片轮播效果
- 强哥语录摘抄(郑强教授)
- Robolectric单元测试 - Android Could not determine artifacts for XXXX: Skipped due to earlier error
热门文章
- 【深度解析】Google第二代深度学习引擎TensorFlow开源
- JAVA(int...i)问题
- Ext中extend
- 【Docker篇之三】Dockerfile创建镜像
- docker管理神器—kubernetes—直接路由篇
- 解决Eclipse出现的Failure to transfer ... jar问题
- H5 data-* 属性,设置获取方法总结
- HttpClient配置
- SSDP:DDoS***的“新宠”
- 感觉文章和回复都不错,转载了---用正则表达式找出不包含连续字符串abc的单词...