SpringBoot x mkcert を使用してHTTPSができるローカル開発環境を構築する

エキサイト株式会社エンジニア佐々木です。ローカル開発環境でHTTPSを使いたい場面がありましたので、ご紹介します。

動作環境

動作環境は下記になります。

$ java --version
openjdk 17.0.2 2022-01-18
OpenJDK Runtime Environment Temurin-17.0.2+8 (build 17.0.2+8)
OpenJDK 64-Bit Server VM Temurin-17.0.2+8 (build 17.0.2+8, mixed mode)

$ ./gradlew --version

------------------------------------------------------------
Gradle 8.2.1
------------------------------------------------------------

Build time:   2023-07-10 12:12:35 UTC
Revision:     a38ec64d3c4612da9083cc506a1ccb212afeecaa

Kotlin:       1.8.20
Groovy:       3.0.17
Ant:          Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM:          17.0.2 (Eclipse Adoptium 17.0.2+8)
OS:           Mac OS X 12.5 aarch64

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.2)

mkcert

ローカル環境で証明書を作成するコマンドになります。

github.com

mkcertコマンドのインストール

# Mac
brew install mkcert

# Windows
choco install mkcert

ローカル認証局の作成

mkcert -install

ローカル証明書の作成

下記のローカル証明書を作成してみます。

  • localhost
  • *.excite.co.jp
  • *.example.com
mkcert -pkcs12  localhost "*.excite.co.jp" "*.example.com"


下記ファイルが出力されます
==> localhost+2.p12

ファイル名は自動で作成されます。変えても動作しますのでわかりやすい命名にしてもいいと思います。

SpringBootへの適用

アプリケーションサーバに証明書ファイルを設置する

下記のディレクトリに先程の証明書ファイルを設置します。

src/main/resources/

アプリケーションの設定を追加する

application.ymlファイルに下記の情報を追記します。

server:
  port: 8443
  ssl:
    key-store: classpath:localhost+2.p12  # 証明書ファイル
    key-store-type: PKCS12              # 証明書作成時のキーストアタイプ
    key-password: changeit              # mkcertデフォルト
    key-store-password: changeit   # mkcertデフォルト

確認

アプリケーションサーバ起動して、ブラウザで確認してみます。

HTTPSのアクセスが通っています。中身をみるとmkcertで作られたことがわかります。

まとめ

SpringBoot x mkcertでローカル環境でHTTPS環境を構築する方法でした。簡単にできるのでぜひご活用いただければと思います。