第 21 章 故障排除
本章介绍了在安装证书系统时遇到的一些一些常见使用问题。
- 问: 初始化脚本返回一个 OK 状态,但我的 CA 实例没有响应。这是因为什么?
- 问: 我无法打开 pkiconsole,在 stdout 中看到 Java 例外。
- 问: 我试图运行 pkiconsole,并在 stdout 中得到套接字例外。这是因为什么?
- 问: 我尝试注册证书,我收到错误 "request is not commit...Subject Name Not Found"?
- 问: 为什么我的注册的证书没有被发布?
- 问: 如何从远程主机打开 pkiconsole 工具?
- 问: 当 LDAP 服务器没有响应时,我该怎么办?
问:
初始化脚本返回一个 OK 状态,但我的 CA 实例没有响应。这是因为什么?
答:
这应该不会发生这种情况。通常(但不始终),这表示 CA 的监听程序问题,但可能会有很多不同的原因。检查实例的
catalina.out
、系统
和调试
日志文件,以查看发生的错误。这列出了几个常见的错误。
一个情况是,当 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 pki-server restart instance_name
问:
我无法打开 pkiconsole,在 stdout 中看到 Java 例外。
答:
这可能意味着您安装了错误的 JRE,或者将错误的 JRE 设置为默认值。运行 alternatives --config java 以查看所选的 JRE。Red Hat Certificate System 需要 OpenJDK 1.8。
问:
我试图运行 pkiconsole,并在 stdout 中得到套接字例外。这是因为什么?
答:
这意味着存在端口问题。管理端口有不正确的 SSL 设置(例如,
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)
问:
我尝试注册证书,我收到错误 "request is not commit...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 被错误配置。要查找错误的主要位置是
调试日志
,它可以指示错误配置的位置。例如,这在映射程序中存在问题:
[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)连接:
- 设置 VNC 服务器,例如在 Red Hat Certificate System 服务器中。有关远程桌面访问的详情,请查看 RHEL 8 文档中的 相关部分。重要
pkiconsole
工具无法在启用了联邦信息处理标准(FIPS)模式的服务器上运行。如果您的证书系统服务器上启用了 FIPS 模式,请使用 Red Hat Enterprise Linux 的不同主机来运行 VNC 服务器。请注意,这个工具将被弃用。 - 在 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)
在修复底层网络问题(如电缆未插入)后,红帽目录服务器将停止、发生大量数据包丢失,或确保 TLS 连接可以被重新创建、停止,然后在问题中启动证书系统实例:
# systemctl stop pki-tomcatd-nuxwdog@instance_name.service
# systemctl start pki-tomcatd-nuxwdog@instance_name.service