本番環境ではない開発用の環境でもたまにhttpsでアクセスしないといけない必要がでてきますよね。今回 Pleiades All in One で構成した Eclipse + Tomcat の環境でSSLを設定したメモを残します。Eclipseの環境といいますかJavaで使用するツールとTomcatを設定しましょうというだけの話ですけども。
証明書を作成
開発環境のWebサーバーに設定するSSLの証明書を作成します。開発、デバッグ用なので雑に作ってしまって問題ないです。いわゆるオレオレ証明書ですね。
JDKやJRE内のbinディレクトリにkeytoolというモジュールがありますのでこれを使います。WindowsでもMacでも基本的に同じ方法で作成できます。
- Step1
端末にインストールされているJDKかJRE内のbinディレクトリーをコンソールで開きます。
- Step2
binディレクトリー内にあるkeytoolを使用します。
-keystoreのところに出力する証明書のファイル名を指定します。Console.\keytool -genkeypair -keystore dev_ssl.jks -keyalg RSA - Step3
証明書に設定するパスワードを指定します。6文字以上である必要があります。
Consoleキーストアのパスワードを入力してください: - Step4
確認のためにStep3で入力したパスワードを再度入力します。間違えた場合Step3に戻ります。
Console新規パスワードを再入力してください: - Step5
開発環境用なので指定なし(空白)のまま次へ進んでも問題ありませんが、ここではとりあえずテキトーな名称を設定しておきます。
Console姓名は何ですか。 [Unknown]: test1 - Step6
開発環境用なので指定なしのまま次へ進んでも問題ありませんが、ここでは(以下略)
Console組織単位名は何ですか。 [Unknown]: test2 - Step7
開発環境用なので指定なしのまま次へ進んでも問題ありませんが、ここでは(以下略)
Console組織名は何ですか。 [Unknown]: test3 - Step8
開発環境用なので指定なしのまま次へ進んでも(略)
Console都市名または地域名は何ですか。 [Unknown]: test4 - Step9
開発環境用なので(ry
Console都道府県名または州名は何ですか。 [Unknown]: test5 - Step10
開発環境(r
Consoleこの単位に該当する2文字の国コードは何ですか。 [Unknown]: jp - Step11
Yで次に進みます。設定を間違えた場合はそのままEnterかNを入力してStep5に戻ります。
ConsoleCN=test1, OU=test2, O=test3, L=test4, ST=test5, C=jpでよろしいですか。 [いいえ]: Y - Step12
か(
Console<mykey>の鍵パスワードを入力してください (キーストアのパスワードと同じ場合はRETURNを押してください): - Step13タイトル
警告されますが開発用なので無視でよいです。これでオレオレ証明書のファイルが作成されました。この例ではbinディレクトリー内にdev_ssl.jksがありますので、Web公開エリア外で置きたい場所に移動します。
ConsoleWarning: JKSキーストアは独自の形式を使用しています。"keytool -importkeystore -srckeystore dev_ssl.jks -destkeystore dev_ssl.jks -deststoretype pkcs12"を使用する業界標準の形式であるPKCS12に移行することをお薦めします。
証明書をTomcatに設定する
server.xmlに追記を行います。Eclipse環境であればプロジェクト・エクスプローラーのServersで開くのが手っ取り早いと思います。
既存のConnectorタグの次に追加するとよいと思います。ここの【証明書のファイルパス】はStep13の移動先のファイルパス、【証明書のパスワード】はStep3の証明書のパスワードを指定します。
<!-- デフォルトならこんな感じの8080ポートの設定がある -->
<Connector connectionTimeout="20000" maxParameterCount="1000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<!-- 追加するSSLの設定 -->
<Connector
port="443"
protocol="HTTP/1.1"
SSLEnabled="true"
scheme="https"
keystoreFile="【証明書のファイルパス】"
keystorePass="【証明書のパスワード】" />
ブラウザでアクセスして確認
実際にブラウザでアクセスしてみると警告画面になると思います。オレオレ証明書なもんですから。詳細設定ボタンをクリックします。

****(ホスト名)にアクセスするをクリックしてページにアクセスします。

今回は自分で作成した証明書とわかりきっているのでそのままアクセスしています。
そうではない他のサイトでこうなった場合はお勧めしません。
ブラウザで証明書の内容をみてみる
作成した証明書の内容をブラウザで見てみます。アドレスバーの部分から確認できます。

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



コメント