またまたメモ。サーバ証明書とかの作り方をレクチャーしても覚えてくれないからスクリプトにしてみた。これでなんとかみんな作れるようになったみたい。
よかったよかった。それにしても無駄にメニューとか作る必要ないよね・・・。
こういうスクリプト書いてもすぐどっか行っちゃってまた書き直しになる事が多かったから、ここで保存しておけるのは便利だ。
ところどころ適当な英語になっているはご愛嬌。
#!/bin/sh ##################################################################################################### #基本的な設定として #秘密鍵:RSA方式1024bit #SSL暗号化方式:AES-128 #ハッシュアルゴリズム:SHA1で設定しています #その為AES-128-SHA1での暗号に対応したサーバ証明書と秘密鍵が作成されます # #タイトルです echo " 独自CAによる証明書の作成、自己署名証明書の作成、証明書の配置ができます!!!" echo #元からあるopenssl.cnfを編集する為、ファイルのパスを変数にします ssl_conf=/usr/share/ssl/openssl.cnf #ここから下は関数です edit_ssl_conf(){ #元からあるssl.cnfを書き換えて作成環境に合わせます vi $ssl_conf } mk_key_csr(){ #秘密鍵から証明書署名要求まで作ります openssl genrsa -des3 -out server.key.secure 1024 chmod 400 server.key.secure openssl rsa -in server.key.secure -out server.key chmod 400 server.key openssl req -new -key server.key -out server.csr rm -f server.key.secure } mk_demoCA_folder(){ #独自認証局を作成します。必ずca.confの内容を確認し、正しい内容にして下さい。 cp -p $ssl_conf ca.conf vi ca.conf CONFIG="-config ca.conf -batch " DAYS="-days 9999" CATOP=./demoCA CAKEY=./cakey.pem CACERT=./cacert.pem REQ="openssl req $CONFIG" if [ "1" -o ! -f ${CATOP}/serial ]; then mkdir ${CATOP} mkdir ${CATOP}/certs mkdir ${CATOP}/crl mkdir ${CATOP}/newcerts mkdir ${CATOP}/private chmod 600 ${CATOP}/private echo "01" > ${CATOP}/serial touch ${CATOP}/index.txt fi if [ ! -f ${CATOP}/private/$CAKEY ]; then echo "Now making CA cert ..." $REQ -new -x509 -sha1 -keyout ${CATOP}/private/$CAKEY \ -out ${CATOP}/$CACERT $DAYS RET=$? fi } mk_client_crt(){ #クライアントへ設定するルート証明書の作成に使うハッシュ値の変数です hash=`openssl x509 -noout -in ./demoCA/cacert.pem -hash` #クライアントへ組みこむルート証明書を作成します openssl x509 -text -in ./demoCA/cacert.pem |\ grep -e "-----BEGIN" -A 22 > $hash".0" } mk_crt(){ #サーバ証明書を作成し、クライアントへ組みこむルート証明書の「ハッシュ値.0」ファイル作成し #そのファイルを表示します。 openssl ca -config ca.conf -out server.crt -infiles server.csr openssl x509 -text -in server.crt mk_client_crt } set_http(){ #apacheに秘密鍵と証明書を配置します chown apache:apache server.* chmod 400 server.* cp -p server.key /etc/httpd/conf/ssl.key/server.key cp -p server.crt /etc/httpd/conf/ssl.crt/server.crt } make_self_crt(){ #自己署名の秘密鍵と証明書を作成します vi $ssl_conf openssl genrsa -out server.key 1024 openssl req -new -key server.key -out csr.pem -sha1 openssl x509 -in csr.pem -out server.crt -req -signkey server.key -days 365 -sha1 } ################################################################################################### #ここから下は独自CA作成メニューです ################################################################################################### make_original_ca_crt(){ #独自CA作成に必要なメニューです。若い番号から順番に行えば出来上がる!はず・・・ select i in edit_ssl_conf mk_key_csr mk_demoCA_folder mk_crt set_http mk_client_crt quit do case $i in edit_ssl_conf) echo "edit ssl.cnf!!!" echo "サーバに元からあるopenssl.cnfを編集します" echo "" sleep 3 edit_ssl_conf ;; mk_key_csr) echo "make server.key&server.csr!!!" echo "秘密鍵と証明書要求を作成します" echo "" sleep 3 mk_key_csr ;; mk_demoCA_folder) echo "make demoCA!!!独自認証局を作成します" echo "" sleep 3 mk_demoCA_folder ;; mk_crt) echo "make crt!!!サーバ証明書を作成します" mk_crt ;; set_http) echo "setting to apache!!!" echo "サーバ証明書と秘密鍵をapacheに配置します" set_http ;; mk_client_crt) echo "make crt file for client!!" echo "クライアント用の証明書を作成します" mk_client_crt ;; quit) echo "ByeBye......." ;; *) echo "No such number." ;; esac exit done } ################################################################################################### #ここから下はメインメニューです ################################################################################################### select i in make_original_ca_crt make_self_crt set_http quit do case $i in make_original_ca_crt) echo "make original ca crt file!!!" echo "独自認証局による証明書を作成します" sleep 1 make_original_ca_crt;; make_self_crt) echo "make self crt file!!!" echo "自己署名証明書を作成します" sleep 3 make_self_crt ;; set_http) echo "setting to apache!!!" echo "サーバ証明書と秘密鍵をapacheに配置します" sleep 3 set_http ;; quit) echo "ByeBye......." ;; *) echo "No such number." ;; esac exit done