ssl通信に利用する電子証明書と秘密鍵を格納するキーストアを作成します。 詳細は、「キーストアファイルの準備」を参照してください。 ssl通信の設定 ローカル コンピュータ 必要な作業は以下のとおりです。 サーバ証明書の鍵ペア作成; キーストアの作成; サーバの鍵ペアの作成 と キーストアの作成. Copyright (C) 2020 ぱーくん plus idea All Rights Reserved. この質問への私の答えを見て、 Javaサーバー用に複数のSSL証明書を持つには. キーストア (KeyStore) とは、鍵と証明書の情報を保管するためのファイルです。 ファイル全体がパスワードによって暗号化されています。 Javaアプリケーションを起動する際に、信頼できる証明書情報が格納されたファイルとして What is going on with this article? キーストアのタイプ: KeyStoreの形式"jks"が表示されます。 2: キーストアのプロバイダ: KeyStoreファイルのプロバイダ"SUN"が表示されます。 3: エントリ数: KeyStoreファイルに格納されている証明書の数が表示されます。 4: 証明書の情報: 別名 javaが正式なルート証明書だと認識していない証明書を使っている場合には、以下のようなエラーが出て、接続に失敗してしまいます。, javaを起動する際に、自己証明書の情報を含めたキーストアを指定してあげると、エラーを回避することができます。, このデフォルトのキーストアに自己証明書を追加してあげるか、自己証明書入りのキーストアファイルを新たに作成して、起動時に、デフォルトのキーストアではなく、そちらのファイルを使用するように指定してあげればよい, ShadowsocksRサーバをVPSにインストールする方法(中国の金盾・GFW対策), dockerのイメージ作成が「cgroups: cannot find cgroup mount destination: unknown.」でエラーになる, pluginsインストール済&ユーザ作成済のJenkins用Dockerイメージを作る手順, proxy背後でJenkinsのプラグインをインストールする時のエラーの対処(docker&windows). keytool - 鍵と証明書の管理ツール 非公開鍵、および対応する公開鍵を認証する X.509 証明書が格納されたキーストア (データベース) を管理します。また、信頼できるエンティティからの証明書も管理します。 形式 keytool [ commands] 説明 実際の証明書ストアはレジストリで管理されており、以下のサブキーをレジストリエディタなどで開いてみると、ストアの内容が表示される。 現在のユーザー HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates. ュアルゴリズムには下記のものを利用, Interstage Application Server é‹ç”¨ã‚¬ã‚¤ãƒ‰, 4.2 セキュリティ機能を利用した運用方法, 3.2.6 Eclipseプラグインによる定義. キーストアとは. By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. 証明書がキーストアに追加されました。 * パスワード入力後、「証明書がキーストアに追加されました。」というメッセージが表示されます。 6, 中間CA証明書をインポート cmd>keytool.exe -import -alias intermediateCA -keystore sdp.keystore -trustcacerts -file intermediateCA.cer キーストアファイルの準備. 無事入ったようですね!, Tomcat用の鍵ペアが格納してあるキーストア tomcat.jks を、Tomcatに読み込ませます。, 設定はTomcatのインストールディレクトリ/conf/server.xmlにて行います。インストール直後の設定では、SSLの設定はコメントになっています。server.xmlの中から Connector要素を探し、その次の行に以下の内容を追加します。, 設定の詳細については https://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html#Configuration を参照に。, 以上でTomcatでHTTPSが有効になり、クライアント認証も有効になります(暗号化プロトコルはTLS1.2が選ばれます), サーバ側はクライアント認証を有効にしましたが、搭載するWebアプリケーションにも設定が必要です。クライアント認証(証明書の提示)のみ行うのが今回の目的ですので、設定は非常に簡素です。, http://[サーバのドメインないしはIPアドレス]:8443/ 以下にアクセスすると次の画面にあるように証明書選択のポップアップが表示されます。, Struts2とThymeleaf3大好きでプラグインも作ってますよ。お仕事はSpringですけれど。. keystore(キーストア)にサーバ証明書を作成する. MyKeyManagerを使用する場合は、複数のキーストアを持つことも、複数のコンテキストに対して単一のキーストアを使用することもできます。 [no]: と聞かれますので、「yes」と入力します。, では、作成したキーストアの方を使うように、javaプログラムの起動時に、VMの引数として以下の指定をしてみましょう。, -Djavax.net.ssl.trustStore=cacerts_add -Djavax.net.ssl.trustStorePassword=changeit, これで、自己証明書等のサイトでもjavaのプログラムから問題なく接続ができるようになります。. サーバ証明書はCAの署名がついており、キーストアはキーストア自信が信頼したとマークしたCAの署名がないとインポートできません。, ですので、まずはCAの証明書をインポートして、CAの署名をキーストアに認識させます。, これで、自己署名のCAから発行した証明書を受け入れる準備が整いましたので、続いてはサーバ証明書をキーストアへインポートします。, 鍵ペアなので、-aliasは 秘密鍵と同じ tomcat に必ずします。 Why not register and get more from Qiita? キーストアの中身一覧を見るには、同じくkeytoolを使います。, keytoolから行います。先ほどの秘密鍵生成のときに入力した情報をもとにCSRを発行します。, できあがったサーバ証明書と、最初に作成したCAの証明書を、キーストアへインポートします。 Help us understand the problem. Tomcat用の鍵ペアを作成します。作成はKeytoolから行います。 "org.apache.coyote.http11.Http11NioProtocol", Arm IPのほとんどを自由にダウンロードして試せる!?Arm Flexible Accessとは, https://gist.github.com/A-pZ/4b79b9a47829da076bbb, https://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html#Configuration, 暗号で扱うファイルを格納。今回は公開鍵暗号方式の一式を扱い、Tomcat8にこれらを読ませる。, 公開鍵暗号で扱う鍵の妥当性を検証する。認証局は複数の階層を持つことが可能で、階層の頂点をルートCAと呼ぶ。, 証明書を利用する側が、認証局に証明書の発行を要求するために必要な内容を記したファイル, 秘密鍵によって暗号化されたものを復号するための鍵で、認証局から発行された証明書の構成要素の1つ。, 証明書の妥当性検証に利用。署名にはSHA-256などのハッシュ関数を用いる。電子署名の略で、CAが証明書に対して署名を付与する。, CAにより無効化した証明書のリスト。CRLも電子証明書と同様、CAの署名が付与されている。失効リストがなくてもクライアント認証は動作するが、失効リストには何らかの理由で無効化した証明書が記載されているので正式運用時には不可欠である。, pleiades All in one Eclipse 4.4.2 SR1 64bit JREバンドルあり, you can read useful information later efficiently. javaのプログラムからSSLで接続する場合に、OpenSSH等で作成した自己証明書を使っているサイトを利用する場合があると思います。, 特に、開発時など、正式な証明書が用意されていない時や、開発環境へのアクセスなどが考えられますね。, それ以外にも、javaが正式なルート証明書だと認識していない証明書を使っている場合には、以下のようなエラーが出て、接続に失敗してしまいます。, このような場合は、javaを起動する際に、自己証明書の情報を含めたキーストアを指定してあげると、エラーを回避することができます。, キーストア (KeyStore)とは、鍵と証明書の情報を保管するためのファイルです。, Javaアプリケーションを起動する際に、信頼できる証明書情報が格納されたファイルとして, このキーストアファイルを指定してあげると、アプリケーションは、それらの証明書を利用している, デフォルトのキーストアの場所 キーストアは、通常、システムにインストールされたjreまたはjdkの配下にあります。, 「C:Program FilesJavajre1.5.0_22libsecurity」など、自分の環境のjavaのフォルダの下の「libsecurity」を見てみましょう。, そこに、「cacerts」というファイルがあるはずです。これが、Javaが実行時にデフォルトで使用するキーストアになります。, もうおわかりですね。自己証明書を利用したサイトにJavaプログラムからアクセスするには、このデフォルトのキーストアに自己証明書を追加してあげるか、自己証明書入りのキーストアファイルを新たに作成して、起動時に、デフォルトのキーストアではなく、そちらのファイルを使用するように指定してあげればよいことになります。, どちらでも良いのですが、今回は、分かりやすさとメンテのしやすさのために、新たにファイルを作ることにしましょう。, もし、自分で作成した証明書で無い場合は、サイトにブラウザでアクセスし、証明書をエクスポートしてください。, 説明のために、この証明書(DER X509(cer)形式)を「mycert.cer」とします。, 対象のサイトの証明書だけを格納したキーストアを作成してもよいのですが、すでにデフォルトのキーストアに格納されている証明書に追加したキーストアを作成した方が、ゆくゆくは何かと便利でしょうから、そうしてみます。, 先程のデフォルトのキーストアファイル「cacerts」を複製して、リネームします。, キーストアのパスワードを入力してください: と聞かれますので、「changeit」と入力します。これは、デフォルトのキーストアのパスワードです。, この証明書を信頼しますか? OpenSSLの設定ファイルが必須となります。デフォルト設定でも動作しますが、今回の設定ファイルは https://gist.github.com/A-pZ/4b79b9a47829da076bbb にて公開しています。内容はほぼデフォルトと同じですが、作業ディレクトリをカレントにしていることと、証明書のポリシーを少しゆるくしています(必須条件は、発行者が同じであること), 管理者権限でコマンドプロンプトを開き、OpenSSLのディレクトリへ移動してopensslを実行します。, これでCAの秘密鍵が ca.key の名前で生成されます。後ろの数字は鍵長で、ビット数を記載します。, 鍵長は長いほど堅牢ですが、長さに比例して暗号/復号の時間がかかります。今回は2015年時点で一般的に使われる2048にしています。, これで、ca.crtの名前で、自己署名のCA証明書が完成しました。ブラウザで見ることができますので見てみましょう。, しかしこのCAの証明書は発行しただけで、特にPCへインストールしているわけではないため「このCA証明書は信頼できませんよ」と警告してくれます。, CAに関するファイルの生成はここまでです。 キーストアや keytool に関する詳細は↓のサイトをご覧ください。 keytool - 鍵と証明書の管理ツール では、そのキーストアの作り方ですが、DOS窓で以下のようなコマンドを実行するだけです。 証明書ストアの削除. CAの公開鍵である ca.crt はあとでkeystoreにインポートします。, これで、クライアント証明書 client.crtが生成され、鍵のペアができました!, P12ファイルは電子証明書の鍵ペアがセットになってインストールできる形式のファイルです。Windowsでインストールする場合は、このp12形式のファイルをダブルクリックするだけでインストーラが起動します。, 正式は PKCS#12 形式ですが、拡張子を3文字にする慣例から p12ファイルと呼ぶ方たちもいます。, 成功すると、client.p12ファイルが生成されます。これはWindowsにCAの証明書としてインストールできます。, Tomcat用の鍵ペアを作成します。作成はKeytoolから行います。また、鍵を保管する場所(ファイル)をキーストアと呼びますが、Tomcatに読み込ませるキーストアも同時に作成します。, keytoolはファイルとして存在しないキーストアの名前を指定すると、キーストアも新規作成してくれます。, 秘密鍵は keytool から生成し、公開鍵はCAの証明書を作成したOpenSSLから生成します。, keytoolを使います。OpenSSLのときとは異なり、証明書の情報を入力する順番は真逆です。, これでキーストアに秘密鍵が生成されました。キーストアに格納している証明書や鍵の一覧を見てみましょう。