LoginSignup
0
3

More than 3 years have passed since last update.

SSL証明書発行を自動化しコマンド化

Last updated at Posted at 2019-11-15

やったこと

頻繁にSSL証明書を作成する必要があったので、いちいち入力するのは手間ですしコマンド化しました。
コマンド化手順→ 【超簡単】1分で独自コマンドを作ってみる(Mac・Linux)

セットアップ

下記のシェルスクリプトを mycsc という名前でコマンド化しておく
(コード上部の情報を自分のものに書き換えてください)

mycsc.sh
#!/bin/bash
#mycsc csc = create SSL Sertificate

#---実行前に下記の情報を入力してください(全て英語で)--------------------

COUNTRY="国 日本ならJP"
PROVINCE="都道府県"
LOCALITY="市町村"
ORGANIZATION="会社名"
ORGANIZATION_UNITNAME="所属部署名"
COMMON_NAME="自分の名前"
EMAIL="メールアドレス"

#---------------------------------------------------

#すでに.sslディレクトリが存在すれば削除
if [[ -e ./.ssl ]]; then
        rm -r .ssl
fi

#.sslディレクトリ作成 & 移動
mkdir .ssl && cd .ssl

#20文字のパスワード生成
password=`openssl rand -base64 12 | fold -w 20 | head -1`

#opensslコマンドを実行し、情報を自動入力する
expect -c "
        set timeout 3
        spawn openssl req -x509 -newkey rsa:2048 -keyout keytmp.pem -out cert.pem -days 365
        expect \"Enter PEM pass phrase:\" {
         send \"${password}\n\"
         exp_continue
        } \"Country Name\" {
         send \"${COUNTRY}\n\"
         exp_continue
        } \"State or Province Name\" {
         send \"${PROVINCE}\n\"
         exp_continue
        } \"Locality Name\" {
         send \"${LOCALITY}\n\"
         exp_continue
        } \"Organization Name\" {
         send \"${ORGANIZATION}\n\"
         exp_continue
        } \"Organizational Unit Name\" {
         send \"${ORGANIZATION_UNITNAME}\n\"
         exp_continue
        } \"Common Name\" {
         send \"${COMMON_NAME}\n\"
         exp_continue
        } \"Email Address\" {
         send \"${EMAIL}\n\"
         exp_continue
        } timeout {
         exit 1
        }
"

if [ $? -eq 1 ]; then
        echo "入力がタイムアウトしkeytemp.pemを作成できませんでした。情報が正しいか確認してください"
        exit
fi

#opensslコマンドを実行し、情報を自動入力
expect -c "
        set timeout 3
        spawn openssl rsa -in keytmp.pem -out key.pem
        expect \"Enter pass phrase for keytmp.pem\" {
         send \"${password}\n\"
         exp_continue
        } timeout {
         exit 1
        }
"

if [ $? -eq 1 ]; then
        echo "入力がタイムアウトしkey.pemを作成できませんでした。keytemp.pemとcert.pemを削除します"
        rm keytemp.pem cert.pem
        exit
fi

#keytemp.pemを削除し完了
rm keytmp.pem
echo "SSL証明書発行完了しました!"

使い方

SSL証明書を発行したいディレクトリに移動し、 mycsc を叩くだけ

SSL証明書作成結果

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3