【问题标题】:NPE during Renew super admin certificate更新超级管理员证书期间的 NPE
【发布时间】:2021-11-17 03:27:50
【问题描述】:

我们的超级管理员证书已过期。尝试使用ejbca.sh 更新它,但在最后一步失败了:

[jboss@63a2ea1bfbfd bin]$ ./ejbca.sh batch
./ejbca.sh: line 3: which: command not found
Use 'batch --help' for additional options.
Generating keys in directory /tmp/p12.
Generating for end entities with status NEW.
Batch generating 2 users.
java.lang.NullPointerException
at org.cesecore.configuration.GlobalConfigurationSessionBean$GlobalConfigurationCacheHolder.updateConfiguration(GlobalConfigurationSessionBean.java:281)
at org.cesecore.configuration.GlobalConfigurationSessionBean.getCachedConfiguration(GlobalConfigurationSessionBean.java:141)

版本 6.5.0-Alpha,安装在 jboss 7.1.1 上。知道为什么这个 NPE 吗?

谢谢

【问题讨论】:

    标签: ejbca


    【解决方案1】:

    您的 NPE 的详细信息将在 jboss server.log 文件中可见。服务器端的详细信息记录在那里。 PS:那是一个非常旧的版本。您需要升级。

    【讨论】:

      【解决方案2】:

      感谢@primetomas,我终于解决了这个问题。

      1. 与管理员 CA 相关的加密令牌已脱机。问题中提到的NPE在激活后就解决了。为了不显示 NPE 并真正显示异常,我必须在 cesecore-ejb 更新文件 org.cesecore.configuration.GlobalConfigurationSessionBean 以防止在缓存不包含密钥时出现 NPE。

            public void updateConfiguration(final ConfigurationBase conf, final String configId) {
            if (caches.containsKey(configId)) {
              caches.get(configId).updateConfiguration(conf);
            }else {
                System.out.println(String.format("updateConfiguration(%s) skipped as there is no cache for it ", new Object[] {configId}));
            }
        }
        
      2. 在那次修复之后,另一个 NPE 修复在 cesecore-common org.cesecore.certificates.ca.X509CA

            // Check that the certificate fulfills name constraints
        if (cacert instanceof X509Certificate) {
            GeneralNames altNameGNs = null;
            String altName = "" + subject.getSubjectAltName(); // Added "" to prevent NPE later
            if(certProfile.getUseSubjectAltNameSubSet()){
                altName = certProfile.createSubjectAltNameSubSet(altName);
            }
            if (altName != null && altName.length() > 0) {
                altNameGNs = CertTools.getGeneralNamesFromAltName(altName);
            }
            CertTools.checkNameConstraints((X509Certificate)cacert, subjectDNName, altNameGNs);
        }
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-05
        • 2016-03-05
        • 1970-01-01
        • 2014-02-28
        • 1970-01-01
        相关资源
        最近更新 更多