はじめに
Spring-bootでSSL(HTTPS)を有効にするために色々と試行錯誤してきましたが、ひとつ区切りを作ったのでまとめておきます。結論を言うと、Spring-boot単体でSSL(HTTPS)を有効にするよりも、Spring-bootは通常起動してTomcatやNginxでSSL(HTTPS)を有効にするほうがセキュアです。
ケース1:Spring-boot単体でSSL(HTTPS)を有効にする
こちらの記事が参考になります。
Spring bootでSSL(HTTPS)を有効にする
Spring bootでSSL(HTTPS)を有効にする~Let's Encrypt編~
自己証明でやるなら上の記事、Let's Encrypt使うなら両方を参照してください。Let's Encryptは無料なのでわざわざセキュリティ的に穴がある自己証明を使うメリットはあまりない気がします。そしてLet's EncryptではNginxを使うことを公式に推奨しているので、次に説明するケース2の方が良いと個人的には思います。
ケース2:Spring-bootとNginxを組み合わせてSSL(HTTPS)を有効にする
こちらの記事が参考になります。
Spring bootでSSL(HTTPS)を有効にするならnginxを使え
Spring-bootでSSL(HTTPS)有効にするならnginxを使え~完結編~
上の記事でNginxの導入ができます。下の記事は発展です。下の記事では、「httpからhttpsへのリダイレクト」「『www.example.com』と『example.com』の共存」「稼働中のSpring-bootで『X-Forwarded-For』が『127.0.0.1』になるのを防ぐ」「DDoS攻撃対策、rate limitingの導入」を説明しています。
おわりに
これでSpring-bootにおけるSSL(HTTPS)の有効方法やセキュアなサーバーの作り方についての一通りの設定ができたと思います。4ヶ月ほどサーバーを稼働していますが、今のところ問題はひとつも起きていません。続報があればまた記事を上げます。