エキサイト株式会社エンジニア佐々木です。ローカル開発環境で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
ローカル環境で証明書を作成するコマンドになります。
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環境を構築する方法でした。簡単にできるのでぜひご活用いただければと思います。