Klocwork サーバーセキュア接続の使用
Klocwork ツールを設定して、セキュア HTTP 接続 (https) を使用することができます。これは、Klocwork サーバーに接続するすべての Klocwork クライアントツールは SSL を使用して接続することを意味します。
以下のステップを実行して、SSL を設定してください。
- Klocwork サーバーを設定します。
- Klocwork サーバーに接続するすべての Klocwork クライアントツールを設定します。
kwauthconfig を使用して署名なしの証明書を生成するか、独自の署名付きの証明書を生成することができます。これら 2 つのシナリオについて次に説明します。
SSL を使用するための Klocwork サーバーの構成 - 署名なしの証明書
このセクションでは、kwauthconfig を使用して署名なしの SSL 証明書を生成する方法について説明します。署名付きの独自の証明書を生成する場合は、次のセクションを参照してください。
アクセス制御のセットアップの一部として SSL を設定できます。後で SSL を設定することもできます。
アクセス制御を設定していない場合:
- アクセス制御の設定に移動し、アクセス制御メソッドを選択するときに [セキュア Klocwork サーバー接続の使用] チェックボックスを選択してください。テキストフィールドについて次に説明します。
アクセス制御を既に設定している場合:
- Klocwork セキュリティユーティリティ、kwauthconfig を起動する方法は、プラットフォームによって異なります。
- Windows: [スタート] > [すべてのプログラム] > [Klocwork] 23.4 > [Klocwork セキュリティ構成] をクリックします。
- その他: <server_install>/bin から kwauthconfig を実行します。
- [構成] をクリックします。
- [セキュア Klocwork サーバー接続の使用] チェックボックスを選択します。
- 以下に説明するテキストフィールドに入力します。
- [完了]をクリックします。
- Klocwork サーバーを、コマンド kwservice restart を使用して、または Windows Services 管理を使用して再起動します。
kwauthconfig で SSL を設定するためのテキストフィールド
- [ホスト名] は、Klocwork サーバーの完全修飾ホスト名 (testserver.mydomain.com など) です。
- [組織単位] は、この証明書が適用される組織単位 (開発など) です。
- [組織] は組織の名前 (Klocwork など) です。
SSL を使用するための Klocwork サーバーの構成 - 署名付きの証明書
上に示すように、kwauthconfig を使用して、セキュア接続を使用するように Klocwork サーバーを設定すると、生成される証明書は署名なしになります。署名付きの独自の証明書を使用する場合は、自己署名キーストアファイルを作成し、kwauthconfig ユーティリティを実行して設定内容を検出します。
Important:
- セキュア HTTP 設定に関する一般的な Apache Tomcat マニュアル: https://tomcat.apache.org/tomcat-8.5-doc/config/server.html
- keytool 使用に関する完全マニュアル: http://docs.oracle.com/javase/8/docs/technotes/tools/windows/keytool.htm
たとえば、-validity フラグを使用して、デフォルトの証明書有効期間を変更する必要がある場合があります。
自己署名キーストアファイルの作成
<Server_install> から、次のコマンドを実行します。
_jvm/bin/keytool -genkeypair -alias tomcat -keyalg RSA -keystore <projects_root>/tomcat/conf/.keystore -dname "cn=<KlocworkServer_hostname>, ou=<your_organizational_unit>,o=<your_organization>" -keypass changeit -storepass changeit
ここで、
- cn は完全修飾 Klocwork サーバーのホスト名です。
- 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=Klocwork" -keypass changeit -storepass changeit
このコマンドで、.keystore という名前のキーストアファイルが生成されます。
SSL を使用するための Klocwork サーバーの構成 (kwauthconfig を使用)
- Klocwork セキュリティユーティリティ、kwauthconfig を起動します。
- projects_root ディレクトリの場所を指定します。
- [構成] をクリックします...
- [セキュア Klocwork サーバー接続の使用] チェックボックスを選択します。設定内容が正しいことを確認し、[完了]をクリックしてください。(上述のキーストア作成中にこれらの設定が入力されます。)
- Klocwork サーバーをコマンド kwservice --projects-root <projects_root> restart klocwork を使用して、または Windows Services 管理を使用して再起動します。
これらのステップが完了したら、SSL を使用するための Klocwork クライアントツールの構成のセクションに進みます。
SSL を使用するための Klocwork サーバーの構成 (手動)
Klocwork サーバーで SSL を手動で構成/有効化する必要がある場合 (Klocwork をサーバー上で実行していて、シェルアクセスしかない場合など)、手順は次のようになります。
前提条件: .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" />
- その要素に次の属性を追加します (以下の 3 行を maxPostSize と /> の間に貼り付けます)。
SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/.keystore"
- コマンド kwservice --projects-root <projects_root> restart klocwork (または Windows Services 管理) を使用して Klocwork サーバーを再起動します。
これらのステップが完了したら、SSL を使用するための Klocwork クライアントツールの構成のセクションに進みます。
SSL を使用するための Klocwork クライアントツールの構成
このセクションでは、インストール後に Klocwork サーバーセキュア接続を設定する方法について説明します。次の方法で、インストール中に SSL を設定することもできます。
- Windows ユーザーインストーラーの [セキュアなサーバー接続 (HTTPS) を使用する] チェックボックス
- Windows 自動インストールの "USE_SSL" プロパティ
- UnixServer インストーラおよびユーザーインストーラの --use-ssl オプション
クライアント証明書サポート
クライアント証明書と連動するよう Klocwork ツールを構成すると、公開鍵基盤 (PKI) とスマートカードをサポートできるようになります。クライアント証明書は、Klocwork Web API との使用にも対応しています。
前提条件:
- クライアントインストールが Windows で実行されている必要があります。
これを有効にするには、以下の手順に従います。
- Windows で、[スタート] > [すべてのプログラム] > Klocwork 2023.4 > [Klocwork セキュリティ構成] の順にクリックするか、プラットフォームのコマンドラインから次のコマンドを実行します。
kwauthconfig [<projects_root>]
- [構成...] をクリックします。
- まだ行っていない場合、[セキュア Klocwork サーバー接続の使用] チェックボックスを選択して、各フィールドに値を入力します
- [スマートカードクライアント認証の有効化] チェックボックスを選択します。
- [参照...] をクリックして、信頼されるクライアント証明書キーストアの場所を選択します。
- キーストアパスワードを入力します。
- [終了]、[OK] の順にクリックして変更を終了します。
信頼されるクライアント証明書キーストアは管理者によって作成され、Klocwork ツールにアクセスできるすべてのユーザーの証明書を格納します。
ブラウザーで Klocwork ポータルログインページにアクセスする場合、Chrome と Internet Explorer では、そのページに初めてアクセスするときにクライアント証明書の選択を求められます。初回以降は、選択は使用ブラウザーにより自動的に記憶されます。
Firefox では、別のキーストアが使用されるため、以下の手動による構成が必要となります。
- [オプション] > [詳細設定] > [暗号化] に移動します。
- [証明書の表示] をクリックします。
- [証明書] タブをクリックして、[インポート...] をクリックします。
- クライアント証明書を選択して、[開く] をクリックします。
これらの手順を実行した後で初めて Firefox を開くと、証明書の検証を求められる場合があります。証明書を検証した後は、プロンプトは一切表示されず、Klocwork ポータルログインページにアクセスできるようになります。
Klocwork サーバーに接続するコマンドラインツール
--url オプションを指定します。このオプションによって Klocwork サーバーのホストとポートも指定できます (コマンドによっては統合プロジェクトの名前も指定できる)。URL に http ではなく https を指定します。
kwadmin --url https://myserver:8080/
Tip: 古い --host および --port オプションを使用する場合は、--ssl オプションではなく --url オプションを使用できます。
kwadmin --ssl --host myserver --port 8080
GUI ベースのクライアントツール
IDE プラグインおよび Klocwork デスクトップには、Klocwork サーバーに接続されていれば、「セキュア接続使用」オプションを有効にします。
ブラウザーベースのクライアントツール
Klocwork Static Code Analysis、Klocwork Code Review、および Klocwork ドキュメンテーションには、http ではなく https を URL で指定します。http を使用する場合、ファイルのダウンロードを求めるプロンプトが表示される場合があります。
Klocwork Static Code Analysis の場合の例:
https://myserver.mydomain.com:8080/
ブラウザーベースのクライアントツールによって発行される証明書警告
SSL が Klocwork サーバーで設定された後に Klocwork ブラウザーベースのツールに接続するときに、次のような警告が表示されます。
- Firefox の場合、"Secure Connection Failed"
- Internet Explorer の場合、"Certificate Error: Navigation Blocked"
今後、このメッセージが表示されないように、ユーザーは Klocwork サーバーに例外を追加できます。詳細については、お使いのブラウザーのヘルプを参照してください。
HTTP から HTTPS へのリダイレクトの構成
サーバーを HTTP から HTTPS に移行すると、Tomcat を使用して、さまざまなポータル、電子メール、およびドキュメントシステムで、すべてのブックマークとリンクが、新しい HTTPS スキームと新しい安全なポートにリダイレクトされるように構成できます。
ブックマークされた元の URL は、http://localhost:8080 のような、http://<hostname>:<port> の形式になります。HTTPS をポート 8080 に設定したため、リダイレクトは動作しません。リダイレクトを修正するステップは次のとおりです。
-
HTTPS の Klocwork サーバーポートを 8080 以外 (8443 など) に変更する
-
リダイレクト元の、安全ではないコネクタを追加する
-
HTTP/8080 から HTTPS/8443 へのリダイレクトを追加する
HTTPS サーバーポートの変更
-
プロジェクトを停止し、別の HTTPS ポートを設定します。
kwservice -r projects_root stop kwservice -r projects_root set-service-property klocwork port 8443
- <projects_root>/tomcat/conf/server.template を編集し、コネクタ定義から
redirectPort
属性を削除します。 -
プロジェクトを再起動します。
kwservice -r projects_root start
-
https://localhost:8443 を開き、ポータルにログインして、安全なサイトが稼働していることを確認します。必要に応じて、http://localhost:8080 にアクセスできなくなっていることを確認します。
リダイレクト元の、安全ではないコネクタの追加
Tomcat が HTTP/8080 でリクエストに応答するように、そのためのコネクタを追加することで構成します。新しい HTTPS コネクタをテンプレートとして使用し、それを非 SSL になるように変更します。
-
プロジェクトを停止する:
kwservice -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 に指示することです。
-
プロジェクトを停止する:
kwservice -r projects_root stop
-
<Klocwork install>/3rdparty/tomcat/conf/web.xml を編集します。
Important: projects_root/tomcat/conf/web.xml は編集しないでください。Klocwork サーバーの起動時に上書きされるからです。リダイレクトは発生せず、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 Klocwork using the configured Klocwork port (see kwservice 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.KlocworkErrorReportValve" 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 サーバー接続の使用] チェックボックスを選択解除します。
- [完了]をクリックします。
- Klocwork サーバーを、コマンド kwservice restart を使用して、または Windows Services 管理を使用して再起動します。
- 特別な SSL オプションを使用せずに Klocwork ツールを実行する必要があることをすべてのユーザーに通知します。