本番環境ではないローカルの開発環境でも、httpsでアクセスしないと動作確認できない場面がありますよね。CookieのSecure属性が絡む処理や外部API連携のコールバックURLなどが典型例です。
今回はPleiades All in One(Eclipse + Tomcat)の構成でSSLを設定した手順をまとめます。JDKに同梱されているkeytoolコマンドで自己証明書(いわゆるオレオレ証明書)を作成し、Tomcatのserver.xmlに設定するだけなので、それほど難しくはありません。
この記事でわかること
keytoolを使った自己証明書(JKSファイル)の作成手順- TomcatのSSL設定(server.xmlの書き方)
- ブラウザで警告が出たときの対処と証明書の確認方法
keytool で自己証明書を作成する
JDKまたはJREのbinディレクトリにkeytoolが含まれています。WindowsでもmacOS/Linuxでも基本的に同じコマンドで作成できます。
keytool のある場所を確認する
Pleiades All in One を使っている場合、JDKはpleiades/java/以下に含まれています。コマンドプロンプト(またはターミナル)でそのbinディレクトリに移動します。
cd C:\pleiades\java\21\binPleiades以外のJDKを使っている場合はインストールディレクトリ内のbinに同様にkeytoolがあります。
-keystoreに出力するファイル名を指定します。ここではdev_ssl.jksという名前で作成します。
.\keytool -genkeypair -keystore dev_ssl.jks -keyalg RSAmacOS/Linuxの場合は.\ではなく./です。
キーストアに設定するパスワードを入力します。6文字以上である必要があります。このパスワードは後ほどserver.xmlに設定するので控えておきます。
キーストアのパスワードを入力してください:
新規パスワードを再入力してください:姓名・組織名・国コードなどを順番に聞かれます。開発環境用なので適当な値で問題ありません。空白のままEnterでもOKです。
姓名は何ですか。
[Unknown]: test1
組織単位名は何ですか。
[Unknown]: test2
組織名は何ですか。
[Unknown]: test3
都市名または地域名は何ですか。
[Unknown]: test4
都道府県名または州名は何ですか。
[Unknown]: test5
この単位に該当する2文字の国コードは何ですか。
[Unknown]: jp最後に確認が出るのでYを入力して次に進みます。
CN=test1, OU=test2, O=test3, L=test4, ST=test5, C=jpでよろしいですか。
[いいえ]: Y<mykey>の鍵パスワードを求められます。キーストアと同じパスワードでよければそのままEnterを押します。
<mykey>の鍵パスワードを入力してください
(キーストアのパスワードと同じ場合はRETURNを押してください):コマンドを実行したbinディレクトリにdev_ssl.jksが生成されています。このファイルはWebの公開エリア外に移動しておきます。
作成時に以下のような警告が表示されますが、開発用なので無視して問題ありません。
Warning:
JKSキーストアは独自の形式を使用しています。”keytool -importkeystore -srckeystore dev_ssl.jks -destkeystore dev_ssl.jks -deststoretype pkcs12″を使用する業界標準の形式であるPKCS12に移行することをお薦めします。
この警告はJKS形式がPKCS12形式より古い独自仕様であることを示しています。本番環境であれば移行を検討すべきですが、開発用の自己証明書としてはJKSのままで動作します。
Tomcatに証明書を設定する(server.xml の編集)
server.xmlに SSLのコネクター設定を追記します。
Eclipse環境であればプロジェクト・エクスプローラー → Servers → server.xmlをダブルクリックで開くのが手っ取り早いです。
既存の8080ポートのConnectorタグの直後に以下を追加します。
<!-- デフォルトで存在する8080ポートの設定 -->
<Connector connectionTimeout="20000" maxParameterCount="1000"
port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<!-- 追加するSSLの設定 -->
<Connector
port="8443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
keystoreFile="【証明書のファイルパス】"
keystorePass="【証明書のパスワード】" />- port
SSLでアクセスするポート番号です。443はOS側でroot/管理者権限が必要になる場合があるため、開発環境では8443を使うのが無難です。 - keystoreFile
Step7で移動したdev_ssl.jksのファイルパスを絶対パスまたはTomcatからの相対パスで指定します。 - keystorePass
Step3で設定したキーストアのパスワードを指定します。
設定後、EclipseからTomcatを再起動します。
ブラウザでアクセスして確認する
https://localhost:8443/【アプリのコンテキストパス】でアクセスするとブラウザに警告画面が表示されます。自己証明書のためブラウザが信頼できる証明書と判断できないためです。
「詳細設定」をクリックし、「(ホスト名)にアクセスする」リンクからページへ進みます。


⚠️ この操作は自分で作成した証明書とわかっている開発環境でのみ行ってください。見知らぬサイトでこの警告が出た場合は同様の操作はお勧めしません。
アドレスバーの鍵アイコンから証明書の詳細も確認できます。keytoolで設定した姓名・組織名などが反映されていればOKです。
ブラウザで証明書の内容をみてみる
作成した証明書の内容をブラウザで見てみます。アドレスバーの部分から確認できます。

証明書に設定した内容が見れますね。

Q&A
まとめ
- keytoolはJDK/JREのbinディレクトリに含まれているよ。
-genkeypair -keyalg RSAで自己証明書(JKSファイル)を作成できるよ。- server.xmlのConnectorにSSL設定を追加するだけでhttpsが有効になるよ。
- 開発環境ではポート
443より8443を使うほうがトラブルが少ないよ。 - ブラウザの警告は自己証明書に対する正常な動作だよ。





