個人的には他のJavaフレームワークよりも学習コストが低くて最高だと思っているけど、国内ではイマイチ流行らない「Dropwizard」というJavaフレームワークを使っている場合の無料SSL証明書(Let's Encrypt)を使う手順をメモしておく(ほとんど身内向け)
動作確認環境
OS: Ubuntu 16.04 LTS
M/W: OpenJDK1.8,Dropwizard 0.9.1
構築手順
構築手順は以下の通り
1) ドメイン取得
ドメインを持ってない場合は、以下のサイトからフリーのドメイン(www.mamemame.ml等)を取得する
http://www.freenom.com/ja/index.html?lang=ja
※登録後しばらく時間が経過しないと名前引けないので注意
2) 証明書取得
以下の手順で無料のSSL証明書(Let's Encrypt)を取得する
○Let's Encryptについて
https://letsencrypt.jp/
$ sudo apt-get install letsencrypt
$ sudo letsencrypt certonly --standalone -d www.mamemame.ml --email mamemame@mamezou.com
3) keystore(jks)作成
以下のコマンドでJava Key Storeを作成する
$ sudo openssl pkcs12 -export -passout pass:mamemame123 -in /etc/letsencrypt/live/www.mamemame.ml/fullchain.pem -inkey /etc/letsencrypt/live/www.mamemame.com/privkey.pem -out mame.p12 -name mame
$ sudo keytool -importkeystore -deststorepass mamemame123 -destkeypass mamemame123 -destkeystore mame.keystore -srckeystore mame.p12 -srcstoretype PKCS12 -srcstorepass mamemame123 -alias mame
4) keystoreの内容確認
以下のコマンドでkeystoreに正しく登録されているかを確認する
$ sudo keytool -v -list -keystore mame.keystore
6) dropwizardの設定と再起動
設定ファイル(config.yml)を確認(変更)して再起動する
(以下~mamezou/mameにdropwizardのモジュールがインストールされている想定)
$ vi ~mamezou/mame/mame-config.yml
---
applicationConnectors:
- type: https
port: 443
keyStorePath: ssl/mame.keystore
keyStorePassword: mamemame123
certAlias: mame
validateCerts: false # これがないと起動時にエラーになった
trustStorePath: ssl/mame.truststore
---
5) keystoreの配置
作成したkeystoreをdropwaizardのkeystoreに配置する
$ cp -p mame.keystore ~/mamezou/mame/ssl/
6) Dropwizardサーバ起動
$ cd ~mamezou/mame
$ java -jar mame.jar server mame-config.yml
SSL証明書の期限は90日ですが、期間が限定される検証環境(PoC)やデモ環境には最適なソリューションですね
以上