-100p

-10p

+10p

+100p

SSL証明書からkeystoreを自動作成

Let's EncryptのSSL証明書の自動更新と共にkeystoreも自動作成する方法。
パスワード入力を省略してkeystoreを再配置。

関連ページ 参考URL
Let's EncryptはSSL証明書を自動更新してくれるが、その証明書からkeystoreファイルを作らないと結局サイトが動かなくなる。
このkeystoreの自動更新する方法が分かったのでメモ。

renewal-hooks/deployにシェルスクリプトを配置

自動更新の方法自体は割と簡単。
Ubuntu環境であればetc/letsencrypt/renewal-hooks/deployの下にbashファイルを置くことで解決する。

bashファイルの中身自体は、そのサイトをどのように運営しているか大分変わってくると思う。
自分の場合はサイトの運営にTomcatを使っているので、下のような内容になる。
#!/bin/bash

#

LIVE_PATH=
 [letsencrypt/live下のサイトフォルダ] 

TOMCAT_PATH=
 [tomcatのconfフォルダ] 

PASS=
 [パスワードの文字列] 


CHAIN_PATH="${LIVE_PATH}"
 [fullchainのファイル名] 

PEM_PATH="${LIVE_PATH}"
 [privkeyのファイル名] 

P12_PATH="${LIVE_PATH}"
 [pkcs12のファイル名] 

JKS_FROM_PATH="${LIVE_PATH}"
 [keystoreのファイル名] 

JKS_TO_PATH="${TOMCAT_PATH}"
 [keystoreのファイル名] 


sudo rm -r "${P12_PATH}"
sudo rm -r "${JKS_PATH}"

#pkcs12ファイルを作成

sudo openssl pkcs12 -export -in "${CHAIN_PATH}" -inkey "${PEM_PATH}" -out "${P12_PATH}" -password pass:"${PASS}"
#keystoreを作成

sudo keytool -importkeystore -destkeystore "${JKS_FROM_PATH}" -srckeystore "${P12_PATH}" -srcstoretype PKCS12 -srcstorepass "${PASS}" -deststorepass "${PASS}"
#keystoreをtomcatへコピー

sudo mv -f "${JKS_FROM_PATH}"  "${JKS_TO_PATH}"
#tomcatを再起動

sudo service tomcat restart

# EOF
keystoreの作成と、その前のpkcs12ファイルの作成には本来サーバ管理者によるパスワードの入力が必要。
ただパスワードを入力する必要があるならそれは自動更新と言わないので、コードの中にパスワードも押し込んでる。

bashの中にパスワードを直書きしてるのはセキュリティ的に少しヤバいもしれない。
自分はこれが限界だが知識がある人はもっとセキュアの方法に変えていいかも。

陥りやすい注意点として、ファイルの実行権限がない場合がある。
ls -lのコマンドを打ち込み、所有者の権限のxが有効になっているか確認する。
0
0

-100p

-10p

+10p

+100p