第12章 インストールとクローン作成のトラブルシューティング
本章では、Certificate System のインストール時に発生するより一般的なインストールと移行の問題のトラブルシューティングを説明します。
- 12.1. インストール
- 12.2. Java コンソール
12.1. インストール
- 問: Certificate System パッケージまたは更新は表示されません。
- 問: init スクリプトは OK ステータスを返しましたが、その CA インスタンスは応答しません。理由
- 問: CA 署名証明書のサブジェクト名をカスタマイズするには、pkispawn インタラクティブインストールモードを使用します。
- 問: ルート認証局に異なる証明書の有効期間と延長を設定したいのですが、pkispawn を使用して設定する方法がわかりません。
- 問: サブシステムインスタンスを設定した後、Web サービスページに接続しようとすると、HTTP 500 エラーコードが表示されます。
問:
Certificate System パッケージまたは更新は表示されません。
答:
お使いのシステムが Red Hat サブスクリプション管理サービスに正しく登録され、有効なサブスクリプションが割り当てられ、Certificate System のリポジトリーが有効になっていることを確認します。詳細は、「Red Hat サブスクリプションの添付および Certificate System パッケージリポジトリーの有効化」 を参照してください。
問:
init スクリプトは OK ステータスを返しましたが、その CA インスタンスは応答しません。理由
答:
これは起こらないはずです。通常 (常にではありませんが)、これは CA のリスナーの問題を示しますが、さまざまな原因が考えられます。発生したエラーを確認するには、以下のコマンドを実行して
journal
ログを確認します。
journalctl -u pki-tomcatd@instance_name.service
journalctl -u pki-tomcatd@instance_name.service
または、
/var/log/pki/instance_name/subsystem_type/debug
でデバッグログファイルを調べます。
1 つの状況は、CA の PID があり、プロセスが実行されているが、サーバーのリスナーが開かれていないことを示している場合です。これにより、Java 呼び出しクラスエラーが
catalina.out
ファイルに返されます。
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
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
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 証明書を生成する方法はあります。
重要
これは、
pkispawn を
実行して新しい CA インスタンスを作成する 前に 行う必要があります。
pkispawn
が使用する元の CA 証明書プロファイルをバックアップします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp -p /usr/share/pki/ca/conf/caCert.profile /usr/share/pki/ca/conf/caCert.profile.orig
cp -p /usr/share/pki/ca/conf/caCert.profile /usr/share/pki/ca/conf/caCert.profile.orig
- 設定ウィザードが使用する CA 証明書プロファイルを開きます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vim /usr/share/pki/ca/conf/caCert.profile
vim /usr/share/pki/ca/conf/caCert.profile
- Validity Default の有効期限を任意の値にリセットします。たとえば、期間を 2 年に変更するには、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 2.default.class=com.netscape.cms.profile.def.ValidityDefault 2.default.name=Validity Default 2.default.params.range=7200
2.default.class=com.netscape.cms.profile.def.ValidityDefault 2.default.name=Validity Default 2.default.params.range=7200
- プロファイルに新しいデフォルトエントリーを作成し、これをリストに追加して、エクステンションを追加します。たとえば、基本的な制約拡張を追加するには、デフォルトを追加します (この例ではデフォルトの #9)。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
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
次に、新しいデフォルトを使用するデフォルトのリストにデフォルトの番号を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow list=2,4,5,6,7,8,9
list=2,4,5,6,7,8,9
- 新規プロファイルを設定したら、
pkispawn
を実行して新規 CA インスタンスを作成し、設定ウィザードに移動します。
問:
サブシステムインスタンスを設定した後、Web サービスページに接続しようとすると、HTTP 500 エラーコードが表示されます。
答:
これは予期しない一般的なエラーであり、さまざまな原因が考えられます。
journal
、system
、および 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)
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)
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)
[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)
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 の例外が表示されます。
- 問: pkiconsole の実行を試みましたが、標準出力 (stdout) でソケット例外が取得されました。理由
- 問: コンソールの起動を試み、システムはユーザー名とパスワードの入力を要求します。これらの認証情報を入力すると、コンソールが表示されません。
問:
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)
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. ============================================
============================================
${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.
============================================