73 stable releases

300.3.1+3.3.1 Jun 4, 2024
300.2.3+3.2.1 Feb 12, 2024
300.2.1+3.2.0 Dec 11, 2023
300.1.6+3.1.4 Oct 25, 2023
110.0.1+1.1.0f Sep 15, 2017

#94 in Cryptography

Download history 224619/week @ 2024-03-14 226049/week @ 2024-03-21 226173/week @ 2024-03-28 241986/week @ 2024-04-04 244154/week @ 2024-04-11 260276/week @ 2024-04-18 254145/week @ 2024-04-25 249965/week @ 2024-05-02 249190/week @ 2024-05-09 261631/week @ 2024-05-16 277380/week @ 2024-05-23 293789/week @ 2024-05-30 269449/week @ 2024-06-06 269467/week @ 2024-06-13 261967/week @ 2024-06-20 211072/week @ 2024-06-27

1,069,873 downloads per month
Used in 1,441 crates (9 directly)


757K SLoC

C 526K SLoC // 0.1% comments Perl 210K SLoC // 0.1% comments Bitbake 10K SLoC // 0.1% comments GNU Style Assembly 6.5K SLoC // 0.1% comments Shell 1.5K SLoC // 0.2% comments M4 1.5K SLoC // 0.0% comments Prolog 642 SLoC Rust 533 SLoC // 0.2% comments Assembly 311 SLoC // 0.1% comments ASN.1 136 SLoC // 0.5% comments Emacs Lisp 35 SLoC // 0.5% comments Python 29 SLoC // 0.3% comments Ruby 16 SLoC // 0.3% comments


This crate contains the logic to build OpenSSL and is intended to be consumed by the openssl-sys crate. You likely in theory aren't interacting with this too much!


This crate follows the latest minor and patch versions for each maintained major version, according to the OpenSSL release strategy. It has no specific support for LTS versions.

The crate versions follow the X.Y.Z+B pattern:

  • The major version X is the upstream OpenSSL API/ABI compatibility version:
    • 300 for 3.Y.Z
  • The minor Y and patch Z versions are incremented when making changes to the crate, either OpenSSL update or internal changes.
  • B contains the full upstream OpenSSL version, like 1.1.1k or 3.0.7. Note that this field is actually ignored in comparisons and only there for documentation.

Windows MSVC Assembly

Building OpenSSL for windows-msvc targets, users can choose whether to enable assembly language routines, which requires nasm.
The build process will automatically detect whether nasm.exe is installed in PATH. If found, the assembly language routines will be enabled (in other words, the no-asm option will NOT be configured).

You can manipulate this behavior by setting the OPENSSL_RUST_USE_NASM environment variable:

  • 1: Force enable the assembly language routines. (panic if nasm.exe is not available.)
  • 0: Force disable the assembly language routines even if the nasm.exe can be found in PATH.
  • not set: Let the build process automatically detect whether nasm.exe is installed. If found, enable. If not, disable.

However, this environment variable does NOT take effects on non-windows platforms.


This project is licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in openssl-src by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.