SSL 인증서 발급을 자동화하고 명령화

했던 일



자주 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

좋은 웹페이지 즐겨찾기