#!/bin/sh
# # ssl 證書輸出的根目錄。
ssloutputroot="/etc/apache_ssl"
if [ $# -eq 1 ]; then
ssloutputroot=$1
fi
if [ ! -d $ ]; then
mkdir -p $
fi
cd $
echo "開始建立ca根證書..."
# # 建立ca根證書,稍後用來簽署用於伺服器的證書。如果是通過商業性ca如
# verisign 或 thawte 簽署證書,則不需要自己來建立根證書,而是應該
# 把後面生成的伺服器 csr 檔案內容貼入乙個web**,支付簽署費用並
# verisign -
# thawte consulting -
# certisign certificadora digital ltda. -
# iks gmbh - /
# uptime commerce ltd. -
# belsign nv/sa -
# 生成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 $/server.*
echo "伺服器證書簽署檔案及私鑰生成完畢。"
echo "開始使用ca根證書簽署伺服器證書簽署檔案 ..."
# # 簽署伺服器證書,生成server.crt檔案
# 參見
# sign.sh start
# # sign a ssl certificate request (csr)
# 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 <[ 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 $/server.crt"
echo -e "\tsslcertificatekeyfile $/server.key"
# die gracefully
exit 0
SSL自簽署證書生成指令碼
view plain print?bin sh ssl 證書輸出的根目錄。ssloutputroot etc apache ssl if eq 1 then ssloutputroot 1 fi if d then mkdir p fi cd echo 開始建立ca根證書.建立ca根證書,稍後用來簽...
Shell指令碼實現生成SSL自簽署證書
這篇文章主要介紹了shell指令碼實現生成ssl自簽署證書,本文直接給出實現 中包含大量注釋,需要的朋友可以參考下 啟用 apache 的 mod ssl 之後需要有證書才能正常運作。寫了個指令碼來操作。首先要確定機器上已經有 openssl 複製 如下 bin sh ssloutputroot e...
ssl證書生成
openssl req new x509 days 3650 nodes out opt ssl certs postfix.pem keyout opt ssl private postfix.pem第乙個是證書,第二個是key 私鑰 可以應用在很多程式上。下面舉兩個例子 nginx postfi...