2.11 クイック・スタート・インストールでのCA署名SSL証明書の使用

通常、Spatial Studioクイック・スタート・インストールには、SSLまたはHTTPS URL接続の暗号化を処理するための自己署名証明書が付属しています。

ただし、ブラウザが常にセキュアでない接続について警告するようになるため、これは望ましいものではありません。Spatial Studioリリース23.2.0以降では、独自の(CA署名) X.509証明書を使用できます。

次の各項を確認して、目的のシナリオに当てはまるステップを実行してください。

2.11.1 Spatial Studioサーバー用のCA署名証明書と秘密キーの準備

Spatial Studioサーバー用にCA署名証明書と秘密キーを準備できます。

  1. 公的に認められている認証局(CA)からSSL証明書を取得します。

    一般に、証明書はWebサイトのドメインにリンクされた2つのファイルとして提供されます:

    • yourdomain.crt (X.509証明書)
    • yourdomain.key (秘密キー)

    yourdomain.crtファイルは、PEM形式の場合があります。その場合、ファイル名はyourdomain.pemまたはfullchain.pemとして示され、キー・ファイルの名前はprivatekey.pemのようになります。

    ただし、これらのファイルはOpenSSLエコシステムのツールによってのみ生成されサポートされるため、Javaでは、これらのファイルをSSLサポートのために直接使用することはできません。そのため、CA証明書ファイルと秘密キー・ファイルは最初にJavaキー・ストアに変換する必要があります。そうすることで、Spatial Studioクイック・スタートで使用できるようになります。

  2. 次のopensslコマンドを使用して、X.509証明書と秘密キーをPKCS12ファイルに変換します:
    openssl pkcs12 -export -in yourdomain.crt -inkey yourdomain.key \
                   -out yourdomain.p12 -name [some-alias] \
                   -CAfile yourdomain.crt -caname root

    また、前述のコマンドの実行中は、次の点に注意してください:

    • 要求された場合は、パスワードを必ず入力してください。
    • オプションで、このコマンドに-chainオプションを追加すると、実際のCA署名証明書を操作するときに完全な証明書チェーンを保持できます。
    • すべてのCA証明書と秘密キーのファイルの拡張子に対して、同じopensslコマンドを適用します。
  3. 次のJava keytoolコマンドを使用して、PKCS12ファイルをJavaキーストア・ファイルに変換します。
    keytool -importkeystore \
            -deststorepass ChangeIt -destkeypass ChangeIt -destkeystore yourdomain.keystore \
            -srckeystore yourdomain.p12 -srcstoretype PKCS12 -srcstorepass [password_from_step2] \
            -alias [some-alias]

    前述のコマンドにより、パスワードChangeItで保護されたJavaキーストア・ファイルyourdomain.keystoreを生成します。

  4. Javaキーストア・ファイルを使用するように、Spatial Studioサーバーを構成します。

2.11.2 Javaキーストアを使用するためのSpatial Studioサーバーの構成

X.509証明書が含まれているJavaキーストア・ファイルを使用するようにサーバーを構成できます。

この項では、「Spatial Studioサーバー用のCA署名証明書と秘密キーの準備」の説明に従って、すでにX.509証明書と秘密キーから生成したJavaキーストア・ファイル(yourdomain.keystore)があることを前提としています。別の方法で生成したキーストア・ファイルは、Spatial Studioでは機能しないことがある点に注意してください。
  1. Oracle_Spatial_Studioディレクトリにあるconf/server.json構成ファイルを編集して、yourdomain.keystoreファイルの場所とそのパスワードを反映するように、次の3つのSSLフィールドを変更します。
    "sslKeyStorePath": "<path_to_yourdomain.keystore_file>",
    "sslKeyStorePassword": "ChangeIt",
    "sslKeyManagerPassword": "ChangeIt",
  2. オプションで、次のステップを実行して、キーストアの保護パスワード(sslKeyStorePasswordおよびsslKeyManagerPassword)を不明瞭化します。
    1. Oracle_Spatial_Studioディレクトリに移動して、次のコマンドを実行します。
      java -cp ./servletContainer/jetty-util-9.4.51.v20230217.jar org.eclipse.jetty.util.security.Password <
      user> ChangeIt

      userChangeItパスワードは不明瞭化され、出力は次のようになります。

      ChangeIt
      OBF:1pam1o661saj1v9i1v941sar1o4g1pdc
      MD5:72df16e805e7d9c88437b9ea5f8995d6
      CRYPT:blSK4yQrQaaxo
    2. OBFで始まる文字列をコピーし、server.jsonファイルのsslKeyStorePasswordフィールドとsslKeyManagerPasswordフィールドを更新して、プレーン・テキストのパスワードのかわりに不明瞭化されたパスワードを使用するようにします。
  3. Spatial Studioサーバーを再起動して、この変更を有効にします。

    コンソール出力の最初の方に、次のようなログが示されます:

    2023-07-27 01:31:50.740:INFO:oejus.SslContextFactory:main: x509=X509@5e5073ab([followed by some organization name or alias info related to your CA cert]

    この時点で、URL https://yourdomain.com:4040/spatialstudioを使用して、Spatial Studioクイック・スタートに安全にアクセスできるようになりました。

2.11.3 クイック・スタート・インストール用のリバース・プロキシの構成

Spatial Studioクイック・スタート・インストールが、Apache HTTPまたはNGINXサーバーを実行しているホストで実行されている場合は、安全な接続を確保するためにリバース・プロキシを使用できます。

この方法では、Spatial Studioサーバー自体の構成に変更を加える必要はありません。

  1. それぞれのサーバー用の公式ドキュメントに従って、Apache HTTPまたはNGINXサーバーでCA署名証明書を構成します。
  2. Apache HTTPまたはNGINXサーバー構成ファイルで、URL https://youdomain.com/spatialstudioHTTP://localhost:8080/spatialstudioにリバース・プロキシします。
    たとえば、Apache HTTPサーバーがポート80443でリスニングしていて、Spatial Studioクイック・スタートが同じホスト上のポート8080で実行されている場合は、次のようにプロキシ・ディレクティブをApache HTTPサーバー構成ファイルに追加できます。
    <VirtualHost *:443>
        ServerName yourdomain.com
        DirectoryIndex index.html index.php
     
        SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
     
        ProxyRequests On
        ProxyPass /spatialstudio http://localhost:8080/spatialstudio
        ProxyPassReverse /spatialstudio http://localhost:8080/spatialstudio
     
    </VirtualHost>
     
    <VirtualHost *:80>
        ServerName yourdomain.com
        DirectoryIndex index.html index.php
        RewriteEngine on
        RewriteCond %{SERVER_NAME} =yourdomain.com
        RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
     
        ProxyRequests On
        ProxyPass /spatialstudio http://localhost:8080/spatialstudio
        ProxyPassReverse /spatialstudio http://localhost:8080/spatialstudio
    </VirtualHost>
  3. Apache HTTPまたはNGINXサーバーを再起動します。
    これで、https://yourdomain.com/spatialstudioのようなURLを使用して、Spatial Studioに安全にアクセスできるようになりました。