SSL自簽署證書生成指令碼

2021-08-22 00:09:52 字數 3820 閱讀 7352

#!/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...