サーバ証明書の作成 †
- keystore に証明書を作成
# keytool -genkey -keyalg RSA -alias server -keystore /opt/apache-tomcat-6.0.35/.server_keystore
キーストアのパスワードを入力してください: kspass
新規パスワードを再入力してください: kspass
姓名を入力してください。
[Unknown]: Ichiro SUZUKI
組織単位名を入力してください。
[Unknown]: WebAdmin
組織名を入力してください。
[Unknown]: Example
都市名または地域名を入力してください。
[Unknown]: Chiyoda
州名または地方名を入力してください。
[Unknown]: Tokyo
この単位に該当する 2 文字の国番号を入力してください。
[Unknown]: JP
CN=Ichiro SUZUKI, OU=WebAdmin, O=Example, L=Chiyoda, ST=Tokyo, C=JP でよろしいですか?
[no]: y
<server> の鍵パスワードを入力してください。
(キーストアのパスワードと同じ場合は RETURN を押してください):
- 自己署名 (サーバー証明書をサーバー証明書で署名する)
# keytool -selfcert -alias server -keystore /opt/apache-tomcat-6.0.35/.server_keystore -validity 3650 -storepass kspass
- 結果の確認
# keytool -list -v -keystore /opt/apache-tomcat-6.0.35/.server_keystore -storepass kspass
キーストアのタイプ: JKS
キーストアのプロバイダ: SUN
キーストアには 1 エントリが含まれます。
別名: server
作成日: 2012/01/07
エントリタイプ: PrivateKeyEntry
証明連鎖の長さ: 1
証明書[1]:
所有者: CN=Ichiro SUZUKI, OU=WebAdmin, O=Example, L=Chiyoda, ST=Tokyo, C=JP
発行者: CN=Ichiro SUZUKI, OU=WebAdmin, O=Example, L=Chiyoda, ST=Tokyo, C=JP
シリアル番号: 4f0851a0
有効期間の開始日: Sat Jan 07 23:07:28 JST 2012 終了日: Tue Jan 04 23:07:28 JST 2022
証明書のフィンガープリント:
MD5: CD:78:17:96:65:15:6E:7A:3B:14:C8:6A:B1:D6:A8:F7
SHA1: 49:BD:0F:7B:A9:E4:D5:CC:32:1E:24:43:84:5A:7E:D6:7C:AE:A2:59
署名アルゴリズム名: SHA1withRSA
バージョン: 3
*******************************************
*******************************************
(サーバー証明書を認証機関に署名してもらう場合) †
- openssl でサーバー証明書を作成し、CA(認証機関) で認証してもらう → Fedora13 apache#tf35826a
- keystore に CA(認証機関) の証明書をインストール
# keytool -import -file cacert.pem -alias ca -keystore .server_keystore
- keystore に X509 形式のサーバー証明書をインストール
# openssl x509 -in server.crt -out server.x509
# keytool -import -file server.x509 -alias server -keystore .server_keystore
server.xml の編集 †
# vi /opt/apache-tomcat-6.0.35/conf/server.xml
72 <!-- A "Connector" using the shared thread pool-->
73 <!--
74 <Connector executor="tomcatThreadPool"
75 port="8080" protocol="HTTP/1.1"
76 connectionTimeout="20000"
77 redirectPort="8443" />
78 -->
79 <!-- Define a SSL HTTP/1.1 Connector on port 8443
80 This connector uses the JSSE configuration, when using APR, the
81 connector should be using the OpenSSL style configuration
82 described in the APR documentation -->
83 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
84 maxThreads="150" scheme="https" secure="true"
85 clientAuth="false" sslProtocol="TLS"
86 keystoreFile="/opt/apache-tomcat-6.0.35/.server_keystore"
87 keystorePass="kspass"
88 keyAlias="server"
89 />
90
- clientAuth を true にすると、クライアント認証モードになる。HTTPS 通信を行うためにはブラウザ側に別途配布したクライアント証明書が必要になる。
- HTTP 通信を禁止するには、server.xml を編集して、8080 で待ち受けしている Connector 定義をコメントアウトすればいい
実行結果 †
Java#OpenAM