第 20 章 故障排除

本章论述了在安装 CertificateCertificate Systemnbsp;System 时遇到的一些更常见的使用问题。
问:
初始化脚本返回 OK 状态,但 my CA 实例没有响应。这是因为什么?
答:
这不应发生。通常(但并不总是如此),这表示该 CA 的监听程序问题可能有很多不同的原因。检查 catalina.outsystem,以及 调试 日志文件,以查看发生了哪些错误。这列出了几个常见错误。
个情况是 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,请尝试取消设置 LD_LIBRARY_PATH 变量并重启 CA。
unset LD_LIBRARY_PATH
systemctl restart pki-tomcatd@instance_name.service
问:
我无法打开 pkiconsole,并在 stdout 中看到 Java 例外。
答:
这可能意味着您安装了错误 JRE,或将错误 JRE 设置为默认值。运行 alternatives --config java 以查看选择什么 JRE。Red Hat Certificate Systemnbsp;Hat Certificate Red Hat Certificate Systemnbsp;System requires OpenJDK 1.8.
问:
我试图运行 pkiconsole,并在 stdout 中获取套接字例外。这是因为什么?
答:
这意味着存在端口问题。管理端口有不正确的 SSL 设置(表示 server.xml中存在错误的配置),或者为访问 admin 接口提供了错误的端口。
端口错误类似如下:
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)
问:
我试图注册证书,并且收到错误 "request is not submitted...Subject Name Not Found"?
答:
这通常使用自定义 LDAP 目录验证配置集,并显示目录操作失败。特别是,它会失败,因为它无法构造工作的 DN。该错误将位于 CA 的 调试日志 中。例如,这个配置集使用目录无法识别的自定义属性(MYATTRIBUTE):
[14/Feb/2011:15:52:25][http-1244-Processor24]: BasicProfile: populate() policy
setid =userCertSet
[14/Feb/2011:15:52:25][http-1244-Processor24]: AuthTokenSubjectNameDefault:
populate start
[14/Feb/2011:15:52:25][http-1244-Processor24]: AuthTokenSubjectNameDefault:
java.io.IOException: Unknown AVA keyword 'MYATTRIBUTE'.
[14/Feb/2011:15:52:25][http-1244-Processor24]: ProfileSubmitServlet: populate
Subject Name Not Found
[14/Feb/2011:15:52:25][http-1244-Processor24]: CMSServlet: curDate=Mon Feb 14
15:52:25 PST 2011 id=caProfileSubmit time=13
任何自定义组件 - 属性、对象类和未注册的 OID - 在主体 DN 中使用都可能导致失败。在大多数情况下,RHC 2253 中定义的 X.509 属性应该用于主题 DN 而不是自定义属性。
问:
为什么没有发布注册的证书?
答:
这通常表示 CA 被错误配置。查找错误的主要位置是 debug 日志,它可以指示错误配置的位置。例如,这在映射程序中存在问题:
[31/Jul/2010:11:18:29][Thread-29]: LdapSimpleMap: cert subject
dn:UID=me,E=me@example.com,CN=yes
[31/Jul/2010:11:18:29][Thread-29]: Error mapping:
mapper=com.netscape.cms.publish.mappers.LdapSimpleMap@258fdcd0 error=Cannot
find a match in the LDAP server for certificate. netscape.ldap.LDAPException:
error result (32); matchedDN = ou=people,c=test; No such object
检查 CA 的 CS.cfg 文件中的 发布 配置,或者在 CA 控制台的 Publishing 选项卡中检查。在这个示例中,问题位于 mapping 参数中,它必须指向 现有的 LDAP 后缀:
ca.publish.mapper.instance.LdapUserCertMap.dnPattern=UID=$subj.UID,dc=publish
问:
如何从远程主机打开 pkiconsole 工具?
答:
在某些情况下,管理员希望从远程主机在证书系统服务器上打开 pkiconsole。为此,管理员可以使用虚拟网络计算(VNC)连接:
  1. 在 Red Hat Certificate System 服务器中设置 VNC 服务器。
    重要
    pkiconsole 工具无法在启用了 Federal Information Processing Standard(FIPS)模式的服务器中运行。如果证书系统服务器上启用了 FIPS 模式,请在 Red Hat Enterprise Linux 中使用不同的主机来运行 VNC 服务器。
    有关安装 VNC 服务器的详情,请查看 Red Hat System Administrator 指南中的 VNC 服务器 部分。
  2. 使用 VNC viewer 连接到运行 VNC 服务器的主机。详情请查看 Red Hat System Administrator 指南中的 VNC Viewer 部分。
  3. 在 VNC 窗口中打开 pkiconsole 工具。例如:
    # pkiconsole https://server.example.com:8443/ca
注意
VNC viewer 可用于不同类型的操作系统。但是,红帽只支持从集成软件仓库在 Red Hat Enterprise Linux 中安装 VNC viewer。
问:
当 LDAP 服务器没有响应时,我该怎么办?
答:
如果用于内部数据库的 Red Hat Directory Server 实例没有运行,则发生连接问题或 TLS 连接失败,那么您将无法连接到依赖它的子系统实例。实例调试日志将专门识别 LDAP 连接的问题。例如,如果 LDAP 服务器没有在线:
[02/Apr/2019:15:55:41][authorityMonitor]: authorityMonitor: failed to get LDAPConnection. Retrying in 1 second.
[02/Apr/2019:15:55:42][authorityMonitor]: In LdapBoundConnFactory::getConn()
[02/Apr/2019:15:55:42][authorityMonitor]: masterConn is null.
[02/Apr/2019:15:55:42][authorityMonitor]: makeConnection: errorIfDown true
[02/Apr/2019:15:55:42][authorityMonitor]: TCP Keep-Alive: true
java.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
[02/Apr/2019:15:55:42][authorityMonitor]: Can't create master connection in LdapBoundConnFactory::getConn!
    Could not connect to LDAP server host example911.redhat.com port 389 Error netscape.ldap.LDAPException:
        Unable to create socket: java.net.ConnectException: Connection refused (Connection refused) (-1)
在修复底层网络问题后,比如电缆未插入后,Red Hat Directory Server 被停止、发生大量数据包丢失,或者确保可以重新创建 TLS 连接,然后遇到问题并启动证书系统实例:
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
# systemctl start pki-tomcatd-nuxwdog@instance_name.service