PackageTrack
Sign in Get early access

rcgen

Rust X.509 certificate generator

0.14.9 91M downloads/mo #854 most downloaded on crates.io rustls/rcgen

What this package is like to depend on

Last release 13 days ago

10 Aug 2026

Release timing varies

gaps range from 8 days to 9 months

Nearly every release is documented

notes for 45 of 49 stable releases

3 versions withdrawn

withdrawn after publishing

8 years old

52 releases · first in 2019

6 releases in the last 12 months

see the full history below

Release timeline

52 releases · Jan 2019 to Aug 2026
2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 52
  1. 0.14.9 10 Aug 2026
    Release notes

    Previous versions generated DER that is strictly incompatible with the spec, writing an explicit false value for IsCa::ExplicitNoCa where this should be omitted (as it's the default).

    What's Changed

    • doc: amend description to point to CertificateParams for additional explanation by @mcr in #433
    • Omit default cA flag value as required by spec by @djc in #444
    Open source →
  2. 0.14.8 11 May 2026
    Release notes

    What's Changed

    Open source →
  3. 0.14.7 19 Jan 2026
    Release notes

    What's Changed

    • Implement From<KeyPair> for PrivateKeyDer<'static> by @LebedevRI in #403
    • update copyright year in LICENSE by @jasmyhigh in #407
    • Add P521-SHA256 and P521-SHA384 signing algorithms by @djc in #408
    Open source →
  4. 0.14.6 13 Dec 2025
    Release notes

    What's Changed

    • Use private cfg for docs.rs-like builds by @ctz in #384
    • Expand rustdoc for CertificateSigningRequestParams::from_der by @dwhjames in #386
    • Group imports by @iamjpotts in #381
    • examples: add signing new cert using existing ca pem files by @iamjpotts in #379
    • Tweak CSR parsing errors/documentation by @djc in #390
    • Rename invalid CSR signature error variant by @djc in #393
    • chore: fix some typos in comments by @black5box in #395
    • ci: sync cargo-check-external-types nightly by @cpu in #399
    • Forward selected crypto backend to x509-parser by @djc in #398
    Open source →
  5. 0.14.5 25 Sep 2025
    Release notes

    Implement SigningKey for &impl SigningKey to make Issuer more broadly useful.

    What's Changed

    • Forward signing and public key data through references by @djc in #380
    Open source →
  6. 0.14.4 10 Sep 2025
    Release notes

    What's Changed

    • Upgrade botan to 0.12 by @djc in #377
    • Upgrade x509-parser to 0.18 by @djc in #376
    • Add unstable support for ML-DSA algorithms by @djc in #374
    Open source →
  7. 0.14.3 21 Jul 2025
    Release notes

    What's Changed

    • docs: fix typo in PKCS_RSA_SHA384 doc comment by @Bravo555 in #367
    • Fix regression in key usage purpose encoding by @djc in #369
    Open source →
  8. 0.14.2 10 Jul 2025
    Release notes
    • Add a CertifiedIssuer type (see #363)

    What's changed

    • Add a CertifiedIssuer by @djc in #363
    • Provide a non-owning constructor for Issuer by @p-avital in #362
    • Allow access to the CertifiedIssuer's Certificate by @djc in #364
    Open source →
  9. 0.14.1 02 Jul 2025
    Release notes

    Declare 1.71 rust-version and check MSRV in CI.

    What's Changed

    Open source →
  10. 0.14.0 02 Jul 2025
    Release notes

    0.14.0 contains a number of potentially breaking API changes, though hopefully the rate of API change should slow down after this. Here is a summary of the most noticeable changes you might run into:

    • signed_by() methods now take a reference to an &Issuer type that contains both the issuer's relevant certificate parameters and the signing key (see #356). The from_ca_cert_der() and from_ca_cert_pem() constructors that were previously attached to CertificateParams are now attached to Issuer instead, removing a number of documented caveats.
    • The RemoteKeyPair trait is now called SigningKey and instead of KeyPair being an enum that contains a Remote variant, that variant has been removed in favor of KeyPair implementing the trait (see #328). To align with this change, the CertifiedKey::key_pair field is now called signing_key, and CertifiedKey is generic over the signing key type.
    • The KeyPair::public_key_der() method has moved to PublicKeyData::subject_public_key_info() (see #328).
    • Output types like Certificate no longer contain their originating CertificateParams. Instead, signed_by() and self_signed() now take &self, allowing the caller to retain access to the input parameters (see #328). In order to make this possible, Certificate::key_identifier() can now be accessed via CertificateParams directly.
    • String types have been moved into a module (see #329).

    What's Changed

    • Revert impl AsRef issuer by @audunhalland in #325
    • Move string types to separate module by @est31 in #329
    • Unbundle params from output types by @djc in #328
    • Deduplicate Issuer construction by @djc in #332
    • Extract write_extensions() method, reducing rightward drift by @djc in #333
    • Update 0.12-to-0.13.md by @Alirexaa in #338
    • Distribute methods for parsing params elements from x509 by @djc in #336
    • Eagerly derive Clone, Copy, where possible by @lvkv in #341
    • Updated .gitignore to be more specific by @Rynibami in #342
    • Eagerly implemented Debug trait by @Rynibami in #343
    • Minor tweaks to Debug impls and other style improvements by @djc in #348
    • tests: only test against openssl on Unix by @djc in #350
    • Eagerly implemented PartialEq and Eq traits by @Rynibami in #344
    • Use Issuer directly in the public API by @djc in #356
    • Tweak docstring for PublicKeyData::subject_public_key_info() by @djc in #358
    Open source →
  11. 0.13.3 15 Mar 2025 withdrawn

    Nothing published for this version

  12. 0.13.2 20 Dec 2024

    Nothing published for this version

  13. 0.13.1 05 Apr 2024
    Release notes

    Fixed:

    • Fixed incorrect usage of the subject certificate's parameter's key identifier method when computing the key identifier of the issuer for the subject's authority key identifier (AKI) extension.
    Open source →
  14. 0.13.0 28 Mar 2024
    Release notes

    Breaking changes:

    • The API used to create/issue key pairs, certificates, certificate signing requests (CSRs), and certificate revocation lists (CRLs) has been restructured to emphasize consistency and avoid common errors with serialization.

      For each concrete type (cert, CSR, CRL) the process is now the same:

      1. generate or load a key pair and any information about issuers required.
      2. create parameters, customizing as appropriate.
      3. call a generation fn on the parameters, providing subject key pair and issuer information and as appropriate.
      4. call serialization fns on the finalized type, obtaining DER or PEM.

      For more information, see [rcgen/docs/0.12-to-0.13.md].

    • Throughout the API DER inputs are now represented using types from the Rustls rustls-pki-types crate, e.g. PrivateKeyDer, CertificateDer, CertificateSigningRequestDer. Contributed by Tudyx.

    • String types used in SanType and DnValue enums for non-UTF8 string types have been replaced with more specific types that prevent representation of illegal values. E.g. Ia5String, BmpString, PrintableString, TeletexString, and UniversalString. Contributed by Tudyx.

    • Method names starting with get_ have been renamed to match Rust convention: CertificateRevocationList::get_params() -> params() Certificate::get_params() -> params() Certificate::get_key_identifier() -> Certificate::key_identifier() Certificate::get_times() -> Certificate::times()

    Added:

    • RSA key generation support has been added. This support requires using the aws-lc-rs feature. By default using KeyPair::generate_for() with an RSA SignatureAlgorithm will generate an RSA 2048 keypair. See KeyPair::generate_rsa_for() for support for RSA 2048, 3072 and 4096 key sizes.

    • Support for ECDSA P521 signatures and key generation has been added when using the aws-lc-rs feature. Contributed by Alvenix.

    • Support for loading private keys that may be PKCS8, PKCS1, or SEC1 has been added when using the aws-lc-rs feature. Without this feature private keys must be PKCS8. See KeyPair::from_pem_and_sign_algo() and KeyPair::from_der_and_sign_algo() for more information. Contributed by Alvenix.

    • Support has been added for Subject Alternative Name (SAN) names of type OtherName. Contributed by Tudyx.

    • Support has been added for specifying custom "other" OIDs in extended key usage. Contributed by Tudyx.

    • Support has been added for building rcgen without cryptography by omitting the new (default-enabled) crypto feature flag. Contributed by corrideat.

    • Support for using aws-lc-rs in fips mode can now be activated by using the fips feature in combination with the aws-lc-rs feature. Contributed by BiagioFesta.

    • A small command-line tool for certificate generation (rustls-cert-gen) was added. Contributed by tbro.

    Open source →
  15. 0.12.1 26 Jan 2024
    Release notes
    • RFC 5280 specifies that a serial number must not be larger than 20 octets in length. Prior to this release an unintended interaction between rcgen and its underlying DER encoding library could result in 21 octet serials. This has now been fixed.
    • A regression that caused build errors when the optional pem feature was omitted has been fixed.
    Open source →
  16. 0.12.0 16 Dec 2023
    Release notes
    • Rename RcgenError to Error. Contributed by thomaseizinger.
    • The public interface of Error has been made not expose external library types: Error::PemError now holds a String value, and the Error type doesn't support From<_> based conversion any more. This allows rcgen to update dependencies without impacting downstream users.
    • Upgrade to ring v0.17. Contributed by thomaseizinger.
    • Make dependency on ring optional and allow usage of aws-lc-rs via a cargo feature. Ring remains the default. Contributed by BiagioFesta.
    • Add Ia5String support for DistinguishedNames.
    • Add a KeyIdMethod::PreSpecified variant to set, and not generate the SKI. CertificateParams::from_ca_cert_pem now uses it when building params from an existing CA certificate. Contributed by Brocar.
    Open source →
  17. 0.11.3 30 Sep 2023
    Release notes
    • Fix for import errors building without the optional pem feature.
    Open source →
  18. 0.11.2 21 Sep 2023
    Release notes
    • rcgen has joined the umbrella of the rustls organization.
    • Support for retrieving signature algorithm from KeyPairs. Contributed by tindzk.
    • Fix for writing certificate signing requests (CSRs) with custom extensions from parameters without subject alternative names.
    • Support for certificate CRL distribution points extension.
    • Corrected OID for ExtendedKeyUsagePurpose::Any. Contributed by jgallagher.
    • Support for creating certificate revocation lists (CRLs).
    Open source →
  19. 0.11.1 17 Jun 2023
    Release notes
    • Make botan a dev-dependency again. Contributed by mbrubeck.
    Open source →
  20. 0.11.0 15 Jun 2023
    Release notes
    • Parse IP-address subject alternative names. Contributed by iamjpotts.
    • Emit platform-apropriate line endings. Contributed by frjonsen.
    • Support larger serial numbers. Contributed by andrenth.
    • Parse more certificate parameters. Contributed by andrenth.
    • Output SanType::IpAddress when calling CertificateParams::new or generate_simple_self_signed. Contributed by rukai.
    • Update pem to 2.0. Contributed by koushiro.
    Open source →
  21. 0.10.0 29 Sep 2022
    Release notes
    • Update x509-parser to 0.14.
    • Increase minimum supported Rust version to 1.58.1.
    • Update edition to 2021.
    • Change IsCa enum to have NoCa and ExplicitNoCa and Ca(...). Contributed by doraneko94.
    Open source →
  22. 0.9.4 28 Sep 2022 withdrawn
    Release notes
    • yanked due to breaking API changes, see 0.10.0 instead.
    Open source →
  23. 0.9.3 16 Jul 2022
    Release notes
    • Add a KeyPair::serialized_der function. Contributed by jean-airoldie.
    Open source →
  24. 0.9.2 21 Feb 2022
    Release notes
    • Update x509-parser to 0.13. Contributed by matze.
    Open source →
  25. 0.9.1 09 Feb 2022
    Release notes
    • Change edition to 2018 in order to support Rust 1.53.0.
    Open source →
  26. 0.9.0 02 Feb 2022
    Release notes
    • Add RemoteKeyError for usage by remote keys.
    • Support non utf8 strings. Contributed by omjadas.
    • Switch from chrono to time. Contributed by connec.
    • Update edition to 2021.
    Open source →
  27. 0.8.14 14 Oct 2021
    Release notes
    • Update pem to 1.0.
    • Update x509-parser to 0.12.
    Open source →
  28. 0.8.13 23 Aug 2021
    Release notes
    • Bugfix release to make Certificate Send and Sync again.
    Open source →
  29. 0.8.12 22 Aug 2021 withdrawn
    Release notes
    • Use public key as default serial number. Contributed by jpastuszek.
    • Add support for PKCS_RSA_SHA512 and PKCS_RSA_SHA384 signature algorithms.
    • Add support for the keyUsage extension. Contributed by jaredwolff.
    • Ability to use remote keys. Contributed by daxpedda.
    Open source →
  30. 0.8.11 28 Apr 2021
    Release notes
    • Add getters for the criticality, content, and oid_components of a CustomExtension
    • Update yasna to 0.4
    Open source →
  31. 0.8.10 15 Apr 2021
    Release notes
    • Implement some additional traits for some of the types. Contributed by zurborg.
    • Adoption of intra-doc-links
    • Addition of the ability to zero key pairs. Contributed by didier-wenzek.
    Open source →
  32. 0.8.9 04 Dec 2020
    Release notes
    • Switch CI to Github Actions.
    • Strip nanos from DateTime as well. Contributed by @trevor-crypto.
    Open source →
  33. 0.8.7 01 Dec 2020
    Release notes
    • Turn botan back into a dev-dependency. Contributed by @nthuemmel.
    • Fix signing when CA uses different signing algorithm . Contributed by @nthuemmel.
    Open source →
  34. 0.8.6 01 Dec 2020
    Release notes
    • Add KeyPair::from_der
    • Add botan based test to the testsuite
    • Update x509-parser to 0.9. Contributed by @djc.
    • Ability to create certificates from CSRs. Contributed by @djc.
    Open source →
  35. 0.8.5 29 Jun 2020
    Release notes
    • Add some more DnTypes: OrganizationalUnitName, LocalityName, StateOrProvinceName
    • Add remove function to DistinguishedName
    • Add ability to specify NameConstraints
    Open source →
  36. 0.8.4 05 Jun 2020
    Release notes
    • Improve spec compliance in the notBefore/notAfter fields generated by using UTCTime if needed
    Open source →
  37. 0.8.3 24 May 2020
    Release notes
    • Fix regression of 0.8.1 that generated standards non compliant CSRs and broke Go toolchain parsers. Contributed by @thomastaylor312.
    Open source →
  38. 0.8.2 17 May 2020
    Release notes
    • Disable chrono default features to get rid of time crate
    • Improve openssl tests to do a full handshake with the generated cert
    Open source →
  39. 0.8.1 02 Apr 2020
    Release notes
    • Fix non-standard-compliant SubjectKeyIdentifier X.509v3 extension format
    • BasicConstraints X.509v3 extension is now marked as critical
    • Use RFC 7093 to calculate calculate subject key identifiers
    • Add option to insert AuthorityKeyIdentifier X.509v3 extension into non-self-signed certificates
    • Update to x509-parser 0.7
    Open source →
  40. 0.8.0 12 Mar 2020
    Release notes
    • Update to pem 0.7
    • Correct number of nanoseconds per second. Contributed by @samlich.
    • Adoption of the non_exhaustive feature in the API
    Open source →
  41. 0.7.0 14 Sep 2019
    Release notes
    • Bugfix release for ip address subject alternative names. Turns out they aren't CIDR subnets after all :)
    Open source →
  42. 0.6.0 12 Sep 2019
    Release notes
    • Support for email and cidr subnet (ip address) subject alternative names
    • Support for the extended key usage extension
    Open source →
  43. 0.5.1 19 Aug 2019
    Release notes
    • Update to x509-parser 0.6
    Open source →
  44. 0.5.0 19 Jul 2019
    Release notes
    • Update to ring 0.16 and webpki 0.21
    • Update to x509-parser 0.5
    • Expose an API to get the raw public key of a key pair
    Open source →
  45. 0.4.1 28 Jun 2019
    Release notes
    • Allow inspection of DistinguishedName via iterators and get functions
    • Fix a bug in is_compatible not saying false. Contributed by @fzgregor.
    • Extend the public interface of KeyPair. Contributed by @fzgregor.
    Open source →
  46. 0.4.0 18 Jun 2019
    Release notes
    • Support for user supplied keypairs. Contributed by @fzgregor.
    • Support for signing with user supplied CA certificates. Contributed by @fzgregor.
    • Correct a bug with distinguished name serialization (PR link). Contributed by @fzgregor.
    • Addition of limited (no key generation) RSA support
    • Proper error handling with Result and our own Error type
    • Improvements of the testsuite
    Open source →
  47. 0.3.1 06 Jun 2019
    Release notes
    • Ability to disable the dependency on the pem crate
    • Support for creating CSRs (Certificate Signing Requests). Contributed by @djc.
    • Ability to specify custom extensions for certificates
    • Ability to craft acmeIdentifier extensions
    • Update yasna to 0.3.0
    Open source →
  48. 0.3.0 17 May 2019
    Release notes
    • Support for CA certificate generation. Contributed by @djc.
    • Support for certificate signing. Contributed by @djc.
    • Support for ED25519 certificates
    • Support for SHA-384 certificates
    • API cleanups (Future proofing CertificateParams, public constant renames)
    Open source →
  49. 0.2.1 26 Apr 2019
    Release notes
    • Updated to pem 0.6
    Open source →
  50. 0.2.0 10 Jan 2019

    Nothing published for this version

  51. 0.1.0 06 Jan 2019

    Nothing published for this version

  52. 0.0.2 03 Jan 2019

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive