如何在java中将证书扩展列入白名单

问题描述 投票:0回答:1

在 ssl 握手时,出现以下错误:

Certificate contains unsupported critical extensions.

此异常是由 sun.security.validator.EndEntityChecker 类抛出的

    private void checkRemainingExtensions(Set<String> exts)
            throws CertificateException {
        // basic constraints irrelevant in EE certs
        exts.remove(SimpleValidator.OID_BASIC_CONSTRAINTS);

        // If the subject field contains an empty sequence, the subjectAltName
        // extension MUST be marked critical.
        // We do not check the validity of the critical extension, just mark
        // it recognizable here.
        exts.remove(OID_SUBJECT_ALT_NAME);

        if (!exts.isEmpty()) {
            throw new CertificateException("Certificate contains unsupported "
                + "critical extensions: " + exts);
        }
    }

事实证明,导致错误的扩展是验证过程中唯一未删除的扩展。 无法从 CA 中删除此扩展。 如何将此扩展程序列入白名单?

java ssl tls1.2 java-security
1个回答
0
投票

您可以编写一个

PKIXCertPathChecker
来处理并删除此扩展,然后使用
PKIXParameters.addCertPathChecker
方法将其添加为检查器,然后使用
TrustManagerFactory.init
方法设置这些参数。

© www.soinside.com 2019 - 2024. All rights reserved.