第12章 インストールとクローン作成のトラブルシューティング

本章では、Certificate System のインストール時に発生するより一般的なインストールと移行の問題のトラブルシューティングを説明します。

12.1. インストール

問:
Certificate System パッケージまたは更新は表示されません。
答:
お使いのシステムが Red Hat サブスクリプション管理サービスに正しく登録され、有効なサブスクリプションが割り当てられ、Certificate Systemのリポジトリーが有効になっていることを確認します。詳細は、「Red Hat サブスクリプションの添付および Certificate System パッケージリポジトリーの有効化」 を参照してください。
問:
init スクリプトは OK ステータスを返しましたが、その CA インスタンスは応答しません。理由
答:
これは起こらないはずです。通常 (常にではありませんが)、これは CA のリスナーの問題を示しますが、さまざまな原因が考えられます。発生したエラーを確認するには、以下のコマンドを実行して journal ログを確認します。
journalctl -u pki-tomcatd@instance_name.service
または、/var/log/pki/instance_name/subsystem_type/debug でデバッグログファイルを調べます。
1 つの状況は、CA の PID があり、プロセスが実行されているが、サーバーのリスナーが開かれていないことを示している場合です。これにより、catalina.out ファイルで Java 呼び出しクラスエラーが返されます。
Oct 29, 2010 4:15:44 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-9080
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:615)
        at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:243)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:408)
Caused by: java.lang.UnsatisfiedLinkError: jss4
これは、JSS または NSS の誤ったバージョンがあることを意味します。このプロセスでは、パスに libnss3.so が必要です。以下のコマンドでこれを確認します。
ldd /usr/lib64/libjss4.so
libnss3.so が見つからない場合は、/etc/sysconfig/instance_name 設定ファイルに正しいクラスパスを設定します。次に、systemctl restart pki-tomcatd@instance_name.service コマンドを使用して CA を再起動します。
問:
CA 署名証明書のサブジェクト名をカスタマイズするには、pkispawn インタラクティブインストールモードを使用します。
答:
これには、/etc/pki/default.cfg ファイルへのリンクを表す設定ファイルが必要です。pkispawn(8) および pki_default.cfg(5) の man ページを参照してください。
問:
ルート認証局に異なる証明書の有効期間と延長を設定したいのですが、pkispawn を使用して設定する方法がわかりません。
答:
現在、これは pkispawn を使用して行うことはできません。ただし、pkispawn で使用する証明書プロファイルを編集してルート CA 証明書を生成する方法 isは あります。
重要
新規 CA インスタンスを作成するには、pkispawn を実行する にこれを実行する必要があります。
  1. pkispawn が使用する元の CA 証明書プロファイルをバックアップします。
    cp -p /usr/share/pki/ca/conf/caCert.profile /usr/share/pki/ca/conf/caCert.profile.orig
  2. 設定ウィザードが使用する CA 証明書プロファイルを開きます。
    vim /usr/share/pki/ca/conf/caCert.profile
  3. Validity Default の有効期限を任意の値にリセットします。たとえば、期間を 2 年に変更するには、次のコマンドを実行します。
    2.default.class=com.netscape.cms.profile.def.ValidityDefault
    2.default.name=Validity Default
    2.default.params.range=7200
  4. プロファイルに新しいデフォルトエントリーを作成し、これをリストに追加して、エクステンションを追加します。たとえば、基本的な制約拡張を追加するには、デフォルトを追加します (この例ではデフォルトの #9)。
    9.default.class=com.netscape.cms.profile.def.BasicConstraintsExtDefault
    9.default.name=Basic Constraint Extension Constraint
    9.default.params.basicConstraintsCritical=true
    9.default.params.basicConstraintsIsCA=true
    9.default.params.basicConstraintsPathLen=2
    次に、新しいデフォルトを使用するデフォルトの一覧にデフォルトの番号を追加します。
    list=2,4,5,6,7,8,9
  5. 新規プロファイルを設定したら、pkispawn を実行して新規 CA インスタンスを作成し、設定ウィザードに移動します。
問:
サブシステムインスタンスを構成した後、Web サービスページに接続しようとすると、HTTP 500 エラーコードが表示されます。
答:
これは予期しない一般的なエラーであり、さまざまな原因が考えられます。インスタンスで、journalsystem、および debug ログファイルをチェックして、発生したエラーを確認します。これは、いくつかの一般的なエラーを示していますが、他の方法は多数あります。

エラー #1: LDAP データベースは実行していない

内部データベースに Red Hat Directory Server インスタンスが稼働していない場合は、そのインスタンスに接続できません。これは、インスタンスが準備状態にない journal ファイルで、例外が発生することはありません。
java.io.IOException: CS server is not ready to serve.
        com.netscape.cms.servlet.base.CMSServlet.service(CMSServlet.java:409)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
Tomcat ログは、特に LDAP 接続の問題を特定します。
5558.main - [29/Oct/2010:11:13:40 PDT] [8] [3] In Ldap (bound) connection pool
to host ca1 port 389, Cannot connect to LDAP server. Error:
netscape.ldap.LDAPException: failed to connect to server
ldap://ca1.example.com:389 (91)
インスタンスの debug ログは以下のようになります。
[29/Oct/2010:11:39:10][main]: CMS:Caught EBaseException
Internal Database Error encountered: Could not connect to LDAP server host
ca1 port 389 Error netscape.ldap.LDAPException: failed to connect to
server ldap://ca1:389 (91)
        at com.netscape.cmscore.dbs.DBSubsystem.init(DBSubsystem.java:262)

エラー #2: VPN がアクセスをブロックしている

もう 1 つの可能性として、VPN を介してサブシステムに接続している可能性があります。VPN には、Use this connection only for resources on its network などの構成オプションが有効になっている 必要 があります。そのオプションが有効になっていない場合は、インスタンスの Tomcat サービスの journal ログファイルには、HTTP 500 エラーが発生する一連の接続エラーが表示されます。
May 26, 2010 7:09:48 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet services threw exception
java.io.IOException: CS server is not ready to serve.
        at com.netscape.cms.servlet.base.CMSServlet.service(CMSServlet.java:441)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Thread.java:636)

12.2. Java コンソール

問:
pkiconsole を開くことはできません。標準出力 (stdout) に Java の例外があります。
答:
これはおそらく、間違った JRE がインストールされているか、間違った JRE がデフォルトとして設定されていることを意味します。alternatives --config java を実行して、どのような JRE が選択されているかを確認します。Red Hat Certificate System には OpenJDK 1.7 が必要です。
問:
pkiconsole の実行を試み、標準出力 (stdout) でソケット例外を取得しようとします。理由
答:
これは、ポートに問題があることを意味します。管理ポートの SSL/TLS 設定が間違っている (server.xml の設定が間違っている) か、管理者インターフェースにアクセスするために間違ったポートが付与されたかのいずれかです。
ポートエラーは以下のようになります。
NSS Cipher Supported '0xff04'
java.io.IOException: SocketException cannot read on socket
        at org.mozilla.jss.ssl.SSLSocket.read(SSLSocket.java:1006)
        at org.mozilla.jss.ssl.SSLInputStream.read(SSLInputStream.java:70)
        at
com.netscape.admin.certsrv.misc.HttpInputStream.fill(HttpInputStream.java:303)
        at
com.netscape.admin.certsrv.misc.HttpInputStream.readLine(HttpInputStream.java:224)
        at
com.netscape.admin.certsrv.connection.JSSConnection.readHeader(JSSConnection.java:439)
        at
com.netscape.admin.certsrv.connection.JSSConnection.initReadResponse(JSSConnection.java:430)
        at
com.netscape.admin.certsrv.connection.JSSConnection.sendRequest(JSSConnection.java:344)
        at
com.netscape.admin.certsrv.connection.AdminConnection.processRequest(AdminConnection.java:714)
        at
com.netscape.admin.certsrv.connection.AdminConnection.sendRequest(AdminConnection.java:623)
        at
com.netscape.admin.certsrv.connection.AdminConnection.sendRequest(AdminConnection.java:590)
        at
com.netscape.admin.certsrv.connection.AdminConnection.authType(AdminConnection.java:323)
        at
com.netscape.admin.certsrv.CMSServerInfo.getAuthType(CMSServerInfo.java:113)
        at com.netscape.admin.certsrv.CMSAdmin.run(CMSAdmin.java:499)
        at com.netscape.admin.certsrv.CMSAdmin.run(CMSAdmin.java:548)
        at com.netscape.admin.certsrv.Console.main(Console.java:1655)
問:
コンソールの起動を試み、システムはユーザー名とパスワードの入力を要求します。これらの認証情報を入力すると、コンソールが表示されません。
答:
入力したユーザー名とパスワードが有効であることを確認してください。その場合は、デバッグ出力を有効にして確認します。
デバッグ出力を有効にするには、/usr/bin/pkiconsole ファイルを開き、以下の行を追加します。
============================================
${JAVA} ${JAVA_OPTIONS} -cp ${CP} -Djava.util.prefs.systemRoot=/tmp/.java -Djava.util.prefs.userRoot=/tmp/java com.netscape.admin.certsrv.Console -s instanceID -D 9:all -a $1
----------
note: "-D 9:all" is for verbose output on the console.
============================================