SSL 証明書を配置して HTTPS アクセスを設定

  • 作成者:ayuan0625
  • 編集回数:27次
  • 最終更新:FRInternational 于 2023-03-16
  • 1.概要

    HTTPS プロトコルを有効にするには、有効な SSL 証明書を用意する必要があります。この証明書には、使用者が暗号化通信するための認証情報が含まれています。シングルサインオン認証システムを有効にするためには、証明書が重要な鍵です。クライアントとサーバとの通信も、証明書がセキュリティを保障しています。

    本マニュアルでは、Tomcat サーバーで HTTPS アクセス用の SSL 証明書を設定する方法について説明します。証明書を設定する前に、まず証明書を申請しておかなければなりません。利用者が公式環境で使用するためには、証明書プロバイダから購入する必要があります。一般では、VeriSign や GlobalSign などの国際的に認められている CA によって認証されています。

    本マニュアルでは証明書設定プロセスのデモンストレーションのため、JDK独自の keytool ツールから生成された証明書を使っています。だから、正式な環境では使用することができません。

    注:正式な環境では、本マニュアルの「2.1.証明書を作成する」で生成された証明書は使用できません。証明書は、プロバイダから申請する必要があります。正式な環境で独自の証明書を使用すると、アクセスする時にセキュリティ警告が表示されるため、組み込みサードパーティ・プラットフォームにアクセスできなくなります。

    2.手順

    1.証明書を作成する

    1.JRE をインストールし、Administrator として cmd または Windows Powershell を実行します。cd D:\javasoft\java\jre\binを入力して、JRE の bin ディレクトリに入り、証明書作成のコマンドを実行します。下の画像の通りです。

    注:Tomcatの設定に使用されているJRE に入ります。

    keytool -genkey -alias tomcat-servers -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore

    2.業界標準のフォーマットである PKCS12 に移行する場合、次のコマンドを実行します。

    keytool -importkeystore -srckeystore server.keystore -destkeystore server.keystore -deststoretype pkcs12

    以下の画像のように、キーストアのパスフレーズ:changeitを入力します。

    注:「姓名は何ですか」では、ドメイン名を入力します。ドメイン名に代わって、IP アドレスを入力できません。

    ここでは、「姓名は何ですか」の問題ではroxyを入力しています。実際には存在しないドメイン名のため、テストのために hosts ファイルでこの仮想のドメイン名を記入します。下の画像の通りです。

    こうすることで、roxy にアクセスする時、実際にはローカルマシンである 127.0.0.1 にアクセスします。

    2.証明書をエクスポートする

    以下のコマンドを実行します。

    keytool -export -alias tomcat-servers -storepass changeit -file server.cer -keystore server.keystore

    以下の画像のように、証明書をエクスポートします。

    3.JDK証明書キーストアへ証明書をインポートする

    以下のコマンドを実行します。

    keytool -import -trustcacerts -alias servers -file server.cer -keystore cacerts -storepass changeit

    システムは、この証明書を信頼するか聞きます。次の画像のように、yと答えます。

    4.証明書を Tomcat のインストールディレクトリにコピーする

    1.%JRE_HOME%\binディレクトリに入り、新しく生成したserver.keystoreserver.cercacertsを Tomcat インストールディレクトリの%TOMCAT_HOME%にコピーします。以下の画像の通りです。

    2.%JRE_HOME%\binディレクトリのファイルcacertsを、JREのsecurityディレクトリ、つまり%JRE_HOME%\lib\securityディレクトリに上書きします。以下の画像の通りです。

    5.Webサーバーに証明書を適用する

    1.server.xmlファイルを設定します。管理者としてテキストエディタを起動し、%TOMCAT_HOME%\conf\server.xmlを開きます。SSLに証明書のパスとkeystoreFile及びkeystorePassを探します。以下の画像の通りです。

    注:パスは、絶対パスまたはTomcatの相対パスを入力できます。

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" keystoreFile="D:\tomcat\apache-tomcat-8.5.50\server.keystore" keystorePass="changeit"/>

    2.Tomcatのサービスを再起動し、https://roxy:8443/ にアクセスします。以下の画像の通りです。

    上記の画面が表示されれば、TomcatのSSL設定が成功しています。

    3.注意事項

    1.その他の注意事項

    1.設定しても Tomcat サービスが起動できないのは、「5.Webサーバーに証明書を適用する」の設定の誤りが原因です。上記の手順をきちんと完成したか確認してください。

    2.ブラウザでは警告:潜在的なセキュリティリスクありのヒントが表示されます。それは、Java で生成された証明書を利用して https でアクセスする時の危険性を示しています。

    無料の証明書を申請することもできます。

    2.HTTPS の設定

    Tomcat で SSL 証明書を設定して HTTPS アクセスを実現した後、Websocket 接続を有効にするためには、システム-システム管理-標準で HTTPS の設定を行う必要があります。

    注1:HTTPS の設定は、「標準管理」をご参照ください。

    注2:ポータルでHTTPS設定が表示されない場合、Websocket 接続が正しく設定されているため、修正の必要はありません。

    6.png

    3.リモート接続ができない

    問題の概要

    デザイナーからhttpsによるFineReport プロジェクトへのリモート接続ができない。

    エラーメッセージ:invalid keystore format

    分析

    設定された https プロジェクトは証明書の形式が PKCS12 ですが、デザイナーズクライアントはデフォルトの jks 形式しかサポートしていません。

    解決方法

    Tomcat フォルダに新しい key フォルダを作成し、jks ファイル形式の server.keystore を配置します。

    リモートで接続する場合は、key フォルダの server.keystore を選択します。

    Attachment List


    Theme: FineReport ディプロイ統合
    既に最初
    既に最後
    • Helpful
    • Not helpful
    • Only read