セキュアな Validate サーバー接続の使用
Validate ツールを設定して、セキュア HTTP 接続 (https) を使用することができます。これは、Validate サーバーに接続するすべての Validate クライアントツールは SSL を使用して接続することを意味します。
以下のステップを実行して、SSL を設定してください。
- Validate サーバーを設定します。
- Validate サーバーに接続するすべての Validate クライアントツールを設定します。
-
SAML または OIDC 認証用のセキュア接続を設定する場合は、Validate JVM またはマシンの信頼できるキーストアに証明書を追加する必要があります。詳細については、SAML または OIDC 認証用に SSL を有効にするを参照してください。
kwauthconfig を使用して署名なしの証明書を生成するか、独自の署名付きの証明書を生成することができます。これら 2 つのシナリオについて次に説明します。
SSL を使用するための Validate サーバーの構成 - 署名なしの証明書
このセクションでは、kwauthconfig を使用して署名なしの SSL 証明書を生成する方法について説明します。署名付きの独自の証明書を生成する場合は、次のセクションを参照してください。
アクセス制御のセットアップの一部として SSL を設定できます。後で SSL を設定することもできます。
アクセス制御を設定していない場合:
- アクセス制御の設定に移動し、アクセス制御メソッドを選択するときに [セキュアな Validate サーバー接続の使用] チェックボックスを選択してください。テキストフィールドについて次に説明します。
アクセス制御を既に設定している場合:
- Validate セキュリティユーティリティ、kwauthconfig を起動する方法は、プラットフォームによって異なります。
- Windows: [スタート] > [すべてのプログラム] > [Validate 24.3] > [Klocwork セキュリティ構成] をクリックします。
- その他: <server_install>/bin から kwauthconfig を実行します。
- [構成] をクリックします。
- [セキュア Klocwork サーバー接続の使用] チェックボックスを選択します。
- 以下に説明するテキストフィールドに入力します。
- [終了] をクリックします。
- コマンド validate service restart を使用して、または Windows Services 管理を使用して Validate サーバーを再起動します。
kwauthconfig で SSL を設定するためのテキストフィールド
- [ホスト名] は、Validate サーバーの完全修飾ホスト名 (testserver.mydomain.com など) です。
- [組織単位] は、この証明書が適用される組織単位 (開発など) です。
- [組織] は組織の名前 (例: Validate) です。
SSL - 署名付き証明書を使用するように Validate サーバーを構成する
上に示すように、kwauthconfig を使用して、セキュア接続を使用するように Validate サーバーを設定すると、生成される証明書は署名なしになります。署名付きの独自の証明書を使用する場合は、自己署名キーストアファイルを作成し、kwauthconfig ユーティリティを実行して設定内容を検出します。
- セキュア HTTP 設定に関する一般的な Apache Tomcat マニュアル: https://tomcat.apache.org/tomcat-8.5-doc/config/server.html
- keytool 使用の完全マニュアル:
https://docs.oracle.com/en/java/javase/12/tools/keytool.html
使用中のバージョンに固有のドキュメントを参照してください。
たとえば、-validity フラグを使用して、デフォルトの証明書有効期間を変更する必要がある場合があります。
自己署名キーストアファイルの作成
<Server_install> から、次のコマンドを実行します。
_jvm/bin/keytool -genkeypair -alias tomcat -keyalg RSA -keystore <projects_root>/tomcat/conf/.keystore -dname "cn=<ValidateServer_hostname>, ou=<your_organizational_unit>,o=<your_organization>" -keypass changeit -storepass changeit
フィールド
- cn は完全修飾 Validate サーバーのホスト名です。
- ou と o は、適切な組織のユニットと組織名で置き換える必要があります。
- keypass と storepass の値は、Tomcat のデフォルトの値です。
キーストアは Tomcat の config ディレクトリ (<projects_root>/tomcat/conf) に保存されます。
コマンドラインの例:
_jvm/bin/keytool -genkeypair -alias tomcat -keyalg RSA -keystore <projects_root>/tomcat/conf/.keystore -dname "cn=testserver.klocwork.com, ou=Development, o=Validate" -keypass changeit -storepass changeit
このコマンドで、.keystore という名前のキーストアファイルが生成されます。
SSL を使用するように Validate サーバーを構成する (kwauthconfig を使用)
- Validate セキュリティユーティリティ、kwauthconfig を起動します。
- projects_root ディレクトリの場所を指定します。
- [構成] をクリックします...
- [セキュア Klocwork サーバー接続の使用] チェックボックスを選択します。設定内容が正しいことを確認し、[完了]をクリックしてください。(上述のキーストア作成中にこれらの設定が入力されます。)
- Klocwork サーバーをコマンド kwservice --projects-root <projects_root> restart klocwork を使用するか、Windows Services 管理を使用して再起動します。
これらのステップが完了したら、SSL を使用するための Validate クライアントツールの構成のセクションに進みます。
SSL を使用するように Validate サーバーを構成する (手動)
Validate サーバーで SSL を手動で構成/有効化する必要がある場合 (Validate をサーバー上で実行していて、シェルアクセスしかない場合など)、手順は次のようになります。
前提条件: .keystore ファイルを <projects_root>/tomcat/conf に作成して保存しておく必要があります。
- 次のファイルをテキストエディターで開きます。
<projects_root>/config/admin.conf
- 設定 klocwork.protocol=http を検索し、値を to https に変更します。
- 次のファイルをテキストエディターで開きます。
<projects_root>/tomcat/conf/server.template
- XML 要素 <Connector> を見つけます。以下に例を示します。
<Connector port="$PORT" maxthreads="4-" minSpareThreads="20" maxSpareThreads="40" enableLooksups="false" redirectPort="8443" acceptCount="50" debug="0" connectionTimeout="20000" compression="on" compressionMinSize="2048" noCompressionUserAgents=".*MSIE.*,gozilla,traviata" compressableMimeType="text.htm,text/xml" maxPostSize="0" />
- SSL 属性を
Connector
要素に追加します:SSLEnabled="true" scheme="https" secure="true"
-
また、次の SSLHostConfig 要素を
Connector
に追加します:<SSLHostConfig sslProtocol="TLS"> <Certificate certificateKeystoreFile="conf/.keystore" type="RSA" /> </SSLHostConfig>
- コマンド validate service --projects-root <projects_root> restart klocwork (または Windows Services 管理) を使用して Validate サーバーを再起動します。
これらのステップが完了したら、SSL を使用するための Validate クライアントツールの構成のセクションに進みます。
SSL を使用するように Validate クライアントツールを構成する
このセクションでは、インストール後にセキュアな Validate サーバー接続を設定する方法について説明します。次の方法で、インストール中に SSL を設定することもできます。
- Windows ユーザーインストーラーの [セキュアなサーバー接続 (HTTPS) を使用する] チェックボックス
- Windows 自動インストールの "USE_SSL" プロパティ
- UnixServer インストーラおよびユーザーインストーラの --use-ssl オプション
クライアント証明書サポート
クライアント証明書と連動するよう Validate ツールを構成すると、公開鍵基盤 (PKI) とスマートカードをサポートできるようになります。クライアント証明書は、Validate Web API との併用にも対応しています。
前提条件:
- クライアントインストールが Windows で実行されている必要があります。
これを有効にするには、以下の手順に従います。
- Windows で、[スタート] > [すべてのプログラム] > Validate 2024.3 > [Klocwork セキュリティ構成] の順にクリックするか、プラットフォームのコマンドラインから次のコマンドを実行します。
kwauthconfig [<projects_root>]
- [構成...] をクリックします。
- まだ行っていない場合、[セキュア Klocwork サーバー接続の使用] チェックボックスを選択して、各フィールドに値を入力します
- [スマートカードクライアント認証の有効化] チェックボックスを選択します。
- [参照...] をクリックして、信頼されるクライアント証明書キーストアの場所を選択します。
- キーストアパスワードを入力します。
- [終了]、[OK] の順にクリックして変更を終了します。
信頼されるクライアント証明書キーストアは管理者によって作成され、Validate ツールにアクセスできるすべてのユーザーの証明書を格納します。
ブラウザーで Validate ポータルログインページにアクセスする場合、Chrome と Internet Explorer では、そのページに初めてアクセスするときにクライアント証明書の選択を求められます。初回以降は、選択は使用ブラウザーにより自動的に記憶されます。
Firefox では、別のキーストアが使用されるため、以下の手動による構成が必要となります。
- [オプション] > [詳細設定] > [暗号化] に移動します。
- [証明書の表示] をクリックします。
- [証明書] タブをクリックして、[インポート...] をクリックします。
- クライアント証明書を選択して、[開く] をクリックします。
これらの手順を実行した後で初めて Firefox を開くと、証明書の検証を求められる場合があります。証明書を検証した後は、プロンプトは一切表示されず、Validate ポータルログインページにアクセスできるようになります。
Validate サーバーに接続するコマンドラインツール
--url オプションを指定します。このオプションによって Validate サーバーのホストとポートも指定できます (コマンドによっては統合プロジェクトの名前も指定できる)。URL に http ではなく https を指定します。
kwadmin --url https://myserver:8080/
kwadmin --ssl --host myserver --port 8080
GUI ベースのクライアントツール
IDE プラグインおよび Klocwork デスクトップでは、Validate サーバーに接続されていれば、「セキュア接続使用」オプションを有効にします。
ブラウザーベースのクライアントツール
Validate、Klocwork Code Review、Validate ドキュメンテーションでは、URL に http ではなく https を指定します。http を使用する場合、ファイルのダウンロードを求めるプロンプトが表示される場合があります。
Validate の例:
https://myserver.mydomain.com:8080/
ブラウザーベースのクライアントツールによって発行される証明書警告
SSL が Validate サーバーで設定された後に Klocwork ブラウザーベースのツールに接続するときに、次のような警告が表示されます。
- Firefox の場合、"Secure Connection Failed"
- Internet Explorer の場合、"Certificate Error: Navigation Blocked"
今後、このメッセージが表示されないように、ユーザーは Validate サーバーに例外を追加できます。詳細については、お使いのブラウザーのヘルプを参照してください。
HTTP から HTTPS へのリダイレクトの構成
サーバーを HTTP から HTTPS に移行すると、Tomcat を使用して、さまざまなポータル、電子メール、およびドキュメントシステムで、すべてのブックマークとリンクが、新しい HTTPS スキームと新しい安全なポートにリダイレクトされるように構成できます。
ブックマークされた元の URL は、http://localhost:8080 のような、http://<hostname>:<port> の形式になります。HTTPS をポート 8080 に設定したため、リダイレクトは動作しません。リダイレクトを修正するステップは次のとおりです。
-
HTTPS の Validate サーバーポートを 8080 以外 (8443 など) に変更する
-
リダイレクト元の、安全ではないコネクタを追加する
-
HTTP/8080 から HTTPS/8443 へのリダイレクトを追加する
HTTPS サーバーポートの変更
-
プロジェクトを停止し、別の HTTPS ポートを設定します。
validate service -r projects_root stop validate service -r projects_root set-service-property klocwork port 8443
- <projects_root>/tomcat/conf/server.template を編集し、コネクタ定義から
redirectPort
属性を削除します。 -
プロジェクトを再起動します。
validate service -r projects_root start
-
https://localhost:8443 を開き、ポータルにログインして、安全なサイトが稼働していることを確認します。必要に応じて、http://localhost:8080 にアクセスできなくなっていることを確認します。
リダイレクト元の、安全ではないコネクタを追加する
Tomcat が HTTP/8080 でリクエストに応答するように、そのためのコネクタを追加することで構成します。新しい HTTPS コネクタをテンプレートとして使用し、それを非 SSL になるように変更します。
-
プロジェクトを停止する:
validate service -r projects_root stop
-
<projects_root>/tomcat/conf/server.template を編集します。
-
安全なコネクタ定義をコピーし、それを安全なコネクタ定義の上に貼り付けます。元の安全な定義は変更しないでください。
-
コネクタ定義のコピーで、以下を行います。
-
ポート設定を上記で書き留めた古いポート番号 (8080) に変更する
-
次の属性を追加または設定する:
SSLEnabled="false", scheme="http" and secure="false"
-
次の属性を削除する:
clientAuth="false", sslProtocol="TLS", keystoreFile="conf/mycertificate.cert", keystorePass="password"
-
新しい HTTPS ポートとして構成された redirectPort 属性を追加する:
redirectPort="8443"
-
-
この時点で、リダイレクトは発生しません。HTTP (http://localhost:8080 上) と HTTPS (https://localhost:8443 上) の両方にアクセスできるようになり、それぞれが適切に機能します。
リダイレクトの追加
最後のステップは、上記のコネクタを使用して、安全ではない接続をリダイレクトするように Tomcat に指示することです。
-
プロジェクトを停止する:
validate service -r projects_root stop
-
<Validate install>/3rdparty/tomcat/conf/web.xml を編集します:
Validate サーバーの起動時に上書きされるため、projects_root/tomcat/conf/web.xml は編集しないでください。リダイレクトは発生せず、HTTP サイトと HTTPS サイトに引き続き個別にアクセスできます。web-app を終了するタグの直前に次の XML を追加します。
コピー<!-- Enable redirect from HTTP to HTTPS -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
ブラウザーで古い HTTP URL を開くと、それらは新しい HTTPS URL にリダイレクトされます。たとえば、http://localhost:8080/review/insight-review.html と入力すると、https://localhost:8443/review/insight-review.html にリダイレクトされます。
以下は、リダイレクトのために構成されたサンプルの server.template ファイルです。
<?xml version="1.0" encoding="UTF-8"?>
<Server port="$SHUTDOWNPORT" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<!-- Global JNDI resources Documentation at /docs/jndi-resources-howto.html -->
<GlobalNamingResources />
<Service name="Catalina">
<!-- Insecure connector for redirect -->
<!-- use your old HTTP port number -->
<Connector port="8080" redirectPort="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="64" minSpareThreads="20"
acceptCount="200" connectionTimeout="20000"
URIEncoding="UTF-8" compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml,text/javascript"
maxPostSize="-1"
SSLEnabled="false"
scheme="http"
secure="false"
clientAuth="false"
/>
<!-- Secure connector -->
<!-- $PORT will be configured by Validate using the configured Validate port (see validate service set-service-property) -->
<Connector port="$PORT"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="64" minSpareThreads="20"
acceptCount="200" connectionTimeout="20000"
URIEncoding="UTF-8" compression="on" compressionMinSize="2048"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml,text/javascript"
maxPostSize="-1"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="conf/mycertificate.cert"
keystorePass="password"/>
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" unpackWARs="false" autoDeploy="false" errorReportValveClass="com.klocwork.valves.ValidateErrorReportValve" appBase="webapps">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="common" />
</Host>
</Engine>
</Service>
</Server>
SSL 接続の無効化
- <server_install>/bin から kwauthconfigを起動します。
- [構成] をクリックします。
- [セキュア Klocwork サーバー接続の使用] チェックボックスを選択解除します。
- [終了] をクリックします。
- コマンド validate service restart を使用して、または Windows Services 管理を使用して Validate サーバーを再起動します。
- 特別な SSL オプションを使用せずに Validate ツールを実行する必要があることをすべてのユーザーに通知します。