{"record":{"id":"660ebd5edced0e6f","repo":"apereo/cas","slug":"error-reading-certificate","errorCode":null,"errorMessage":"Error reading certificate ","messagePattern":"Error reading certificate ","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"core/cas-server-core-util-api/src/main/java/org/apereo/cas/util/crypto/CertUtils.java","lineNumber":62,"sourceCode":"     * @param crl       CRL to examine.\n     * @param reference Reference date for comparison.\n     * @return True if reference date is after CRL next update, false otherwise.\n     */\n    public static boolean isExpired(final X509CRL crl, final ZonedDateTime reference) {\n        return reference.isAfter(DateTimeUtils.zonedDateTimeOf(crl.getNextUpdate()));\n    }\n\n    /**\n     * Read certificate.\n     *\n     * @param resource the resource to read the cert from\n     * @return the x 509 certificate\n     */\n    public static X509Certificate readCertificate(final InputStreamSource resource) {\n        try (val in = resource.getInputStream()) {\n            return CertUtil.readCertificate(in);\n        } catch (final Exception e) {\n            throw new IllegalArgumentException(\"Error reading certificate \" + resource, e);\n        }\n    }\n\n    /**\n     * Read certificate x 509 certificate.\n     *\n     * @param resource the resource\n     * @return the x 509 certificate\n     */\n    public static X509Certificate readCertificate(final InputStream resource) {\n        return readCertificate(new InputStreamResource(resource));\n    }\n\n    /**\n     * Creates a unique and human-readable representation of the given certificate.\n     *\n     * @param cert Certificate.\n     * @return String representation of a certificate that includes the subject and serial number.","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/apereo/cas/blob/e7288fc434b4f4505b8452e1a57e8fb3111bb863/core/cas-server-core-util-api/src/main/java/org/apereo/cas/util/crypto/CertUtils.java#L44-L80","documentation":"readCertificate(resource) could not open the given resource's stream or parse its contents as an X.509 certificate (CertUtil.readCertificate threw), so the cause is rethrown as IllegalArgumentException. The input at fault is the certificate resource — wrong path, unreadable stream, or non-PEM/DER content.","triggerScenarios":"Thrown at core/cas-server-core-util-api/src/main/java/org/apereo/cas/util/crypto/CertUtils.java:62 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the certificate resource path/URL is correct and readable","Confirm the file contains a valid PEM or DER X.509 certificate","Inspect the wrapped cause for the precise parse or I/O failure"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e7288fc434b4f4505b8452e1a57e8fb3111bb863","analyzedAt":"2026-09-08T15:39:16.015Z","contentChangedAt":"2026-09-08T15:39:16.015Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}