安装过程中可能会要输入几次密码 统一1234就好了。
两次输入的Common Name 不能相同
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
#!/bin/bash # 来自 zeali.net # 修改 By ihipop 2011-3-27 19:29 #密钥默认长度 lengthbit=1024 # 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 $lengthbit [ $? != 0 ] && echo 生成CA根证书私钥失败 && exit 1 echo "生成CA根证书" echo "根据提示填写各个字段, 但注意 Common Name 最好是有效根域名(如 OOXX.net )," echo "并且不能和后来服务器证书签署请求文件中填写的 Common Name 完全一样" # ,否则会导致证书生成的时候出现 # error 18 at 0 depth lookup:self signed certificate 错误 openssl req -new -x509 -days 365 -key ca.key -out ca.crt [ $? != 0 ] && echo 创建CA根证书失败 && exit 1 echo "CA根证书创建完毕。" echo "开始生成服务器证书签署文件及私钥 ..." # # 生成服务器私钥 openssl genrsa -des3 -out server.key $lengthbit echo "生成服务器证书签署请求文件, Common Name 最好填写使用该证书的完整域名" #(比如: SSL.OOXX.net ) openssl req -new -key server.key -out server.csr [ $? != 0 ] && echo 生成服务器证书签署文件及私钥失败 && exit 2 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 = . 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 签署: $CSR -> $CERT:" openssl ca -config ca.config -out $CERT -infiles $CSR echo "CA 验证: $CERT <-> CA cert" openssl verify -CAfile ./ca.crt $CERT [ $? != 0 ] && echo CA 验证失败,可能签署过程已经失败 无法通过验证 && exit 3 # 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 |
直接下载DropBox [download id="27" format="2"]
《HTTP SSL 证书自签署一键脚本》上有1条评论