2020-05-07 19:44:01 +08:00
Welcome to the OpenSSL Project
==============================
2020-10-17 16:45:49 +08:00
[![openssl logo]][www.openssl.org]
1998-12-21 18:52:47 +08:00
2021-01-24 15:42:52 +08:00
[![github actions ci badge]][github actions ci]
2025-05-10 16:05:10 +08:00
[](https://github.com/openssl/openssl/actions/workflows/os-zoo.yml)
[](https://github.com/openssl/openssl/actions/workflows/provider-compatibility.yml)
[](https://github.com/openssl/openssl/actions/workflows/run_quic_interop.yml)
[](https://github.com/openssl/openssl/actions/workflows/run-checker-daily.yml)
2019-11-30 03:45:28 +08:00
OpenSSL is a robust, commercial-grade, full-featured Open Source Toolkit
2025-04-04 05:17:54 +08:00
for the TLS (formerly SSL), DTLS and QUIC protocols.
2023-10-25 18:10:51 +08:00
The protocol implementations are based on a full-strength general purpose
cryptographic library, which can also be used stand-alone. Also included is a
cryptographic module validated to conform with FIPS standards.
1998-12-22 23:04:48 +08:00
2019-11-29 06:10:51 +08:00
OpenSSL is descended from the SSLeay library developed by Eric A. Young
and Tim J. Hudson.
1999-03-06 22:04:40 +08:00
2020-10-17 16:45:49 +08:00
The official Home Page of the OpenSSL Project is [www.openssl.org].
2019-11-30 03:45:28 +08:00
Table of Contents
=================
- [Overview ](#overview )
- [Download ](#download )
- [Build and Install ](#build-and-install )
- [Documentation ](#documentation )
- [License ](#license )
- [Support ](#support )
- [Contributing ](#contributing )
- [Legalities ](#legalities )
1998-12-22 23:04:48 +08:00
2019-11-29 06:10:51 +08:00
Overview
========
2018-12-06 19:52:18 +08:00
2019-11-29 06:10:51 +08:00
The OpenSSL toolkit includes:
1998-12-22 23:04:48 +08:00
2019-11-30 03:45:28 +08:00
- **libssl**
2023-10-25 18:10:51 +08:00
an implementation of all TLS protocol versions up to TLSv1.3 ([RFC 8446]),
DTLS protocol versions up to DTLSv1.2 ([RFC 6347]) and
2025-04-04 05:17:54 +08:00
the QUIC version 1 protocol ([RFC 9000]).
2019-11-30 03:45:28 +08:00
- **libcrypto**
a full-strength general purpose cryptographic library. It constitutes the
basis of the TLS implementation, but can also be used independently.
- **openssl**
the OpenSSL command line tool, a swiss army knife for cryptographic tasks,
testing and analyzing. It can be used for
2020-05-07 19:44:01 +08:00
- creation of key parameters
- creation of X.509 certificates, CSRs and CRLs
- calculation of message digests
- encryption and decryption
2023-10-25 18:10:51 +08:00
- SSL/TLS/DTLS and client and server tests
- QUIC client tests
2020-05-07 19:44:01 +08:00
- handling of S/MIME signed or encrypted mail
- and more...
2019-11-30 03:45:28 +08:00
Download
========
1998-12-22 23:04:48 +08:00
2019-11-30 03:45:28 +08:00
For Production Use
------------------
1998-12-22 23:04:48 +08:00
2019-11-30 03:45:28 +08:00
Source code tarballs of the official releases can be downloaded from
2024-12-06 01:27:52 +08:00
[openssl-library.org/source/ ](https://openssl-library.org/source/ ).
2019-11-30 03:45:28 +08:00
The OpenSSL project does not distribute the toolkit in binary form.
2000-02-24 07:47:05 +08:00
2019-11-30 03:45:28 +08:00
However, for a large variety of operating systems precompiled versions
2022-09-22 19:27:27 +08:00
of the OpenSSL toolkit are available. In particular, on Linux and other
Unix operating systems, it is normally recommended to link against the
2019-11-30 03:45:28 +08:00
precompiled shared libraries provided by the distributor or vendor.
1999-03-06 22:04:40 +08:00
2023-10-25 18:10:51 +08:00
We also maintain a list of third parties that produce OpenSSL binaries for
various Operating Systems (including Windows) on the [Binaries] page on our
wiki.
2019-11-30 03:45:28 +08:00
For Testing and Development
---------------------------
1999-03-06 22:04:40 +08:00
2019-11-30 03:45:28 +08:00
Although testing and development could in theory also be done using
the source tarballs, having a local copy of the git repository with
the entire project history gives you much more insight into the
code base.
2024-12-06 01:27:52 +08:00
The main OpenSSL Git repository is private.
There is a public GitHub mirror of it at [github.com/openssl/openssl],
2019-11-30 03:45:28 +08:00
which is updated automatically from the former on every commit.
2024-12-06 01:27:52 +08:00
A local copy of the Git repository can be obtained by cloning it from
the GitHub mirror using
2019-11-30 03:45:28 +08:00
2020-05-07 19:44:01 +08:00
git clone https://github.com/openssl/openssl.git
2019-11-30 03:45:28 +08:00
If you intend to contribute to OpenSSL, either to fix bugs or contribute
2024-12-06 01:27:52 +08:00
new features, you need to fork the GitHub mirror and clone your public fork
instead.
2019-11-30 03:45:28 +08:00
2020-05-07 19:44:01 +08:00
git clone https://github.com/yourname/openssl.git
2019-11-30 03:45:28 +08:00
2022-09-22 19:27:27 +08:00
This is necessary because all development of OpenSSL nowadays is done via
2019-11-30 03:45:28 +08:00
GitHub pull requests. For more details, see [Contributing ](#contributing ).
Build and Install
=================
After obtaining the Source, have a look at the [INSTALL ](INSTALL.md ) file for
detailed instructions about building and installing OpenSSL. For some
platforms, the installation instructions are amended by a platform specific
document.
2021-02-02 01:57:40 +08:00
* [Notes for UNIX-like platforms ](NOTES-UNIX.md )
* [Notes for Android platforms ](NOTES-ANDROID.md )
* [Notes for Windows platforms ](NOTES-WINDOWS.md )
* [Notes for the DOS platform with DJGPP ](NOTES-DJGPP.md )
* [Notes for the OpenVMS platform ](NOTES-VMS.md )
* [Notes on Perl ](NOTES-PERL.md )
* [Notes on Valgrind ](NOTES-VALGRIND.md )
2019-11-30 03:45:28 +08:00
2023-10-25 18:10:51 +08:00
Specific notes on upgrading to OpenSSL 3.x from previous versions can be found
2023-08-22 18:56:30 +08:00
in the [ossl-guide-migration(7ossl)] manual page.
2019-11-30 03:45:28 +08:00
Documentation
=============
2023-10-25 18:10:51 +08:00
README Files
------------
There are some README.md files in the top level of the source distribution
containing additional information on specific topics.
* [Information about the OpenSSL QUIC protocol implementation ](README-QUIC.md )
* [Information about the OpenSSL Provider architecture ](README-PROVIDERS.md )
* [Information about using the OpenSSL FIPS validated module ](README-FIPS.md )
* [Information about the legacy OpenSSL Engine architecture ](README-ENGINES.md )
The OpenSSL Guide
-----------------
There are some tutorial and introductory pages on some important OpenSSL topics
within the [OpenSSL Guide].
2019-11-30 03:45:28 +08:00
Manual Pages
------------
The manual pages for the master branch and all current stable releases are
available online.
2025-04-10 13:04:41 +08:00
- [OpenSSL master ](https://docs.openssl.org/master/ )
- [OpenSSL 3.5 ](https://docs.openssl.org/3.5/ )
- [OpenSSL 3.4 ](https://docs.openssl.org/3.4/ )
- [OpenSSL 3.3 ](https://docs.openssl.org/3.3/ )
- [OpenSSL 3.2 ](https://docs.openssl.org/3.2/ )
- [OpenSSL 3.0 ](https://docs.openssl.org/3.0/ )
2019-11-30 03:45:28 +08:00
2023-10-25 19:48:31 +08:00
Demos
-----
2024-11-18 02:15:48 +08:00
There are numerous source code demos for using various OpenSSL capabilities in the
2023-10-25 19:48:31 +08:00
[demos subfolder ](./demos ).
2019-11-30 03:45:28 +08:00
Wiki
----
2025-03-15 00:44:55 +08:00
There is a [GitHub Wiki] which is currently not very active.
2019-11-30 03:45:28 +08:00
License
2019-11-29 06:10:51 +08:00
=======
2009-08-13 00:44:33 +08:00
2019-11-30 03:45:28 +08:00
OpenSSL is licensed under the Apache License 2.0, which means that
you are free to get and use it for commercial and non-commercial
purposes as long as you fulfill its conditions.
1999-03-06 22:04:40 +08:00
2020-06-10 20:15:28 +08:00
See the [LICENSE.txt ](LICENSE.txt ) file for more details.
1999-03-06 22:04:40 +08:00
2019-11-30 03:45:28 +08:00
Support
=======
1999-03-06 22:04:40 +08:00
2019-11-30 03:45:28 +08:00
There are various ways to get in touch. The correct channel depends on
2022-09-22 19:27:27 +08:00
your requirement. See the [SUPPORT ](SUPPORT.md ) file for more details.
1999-03-06 22:04:40 +08:00
2019-11-30 03:45:28 +08:00
Contributing
============
2015-07-29 00:41:36 +08:00
2019-11-30 03:45:28 +08:00
If you are interested and willing to contribute to the OpenSSL project,
please take a look at the [CONTRIBUTING ](CONTRIBUTING.md ) file.
1999-05-06 08:40:46 +08:00
2019-11-30 03:45:28 +08:00
Legalities
==========
2015-10-30 00:06:06 +08:00
2019-11-30 03:45:28 +08:00
A number of nations restrict the use or export of cryptography. If you are
2022-09-22 19:27:27 +08:00
potentially subject to such restrictions, you should seek legal advice before
2019-11-30 03:45:28 +08:00
attempting to develop or distribute cryptographic code.
2019-11-29 06:10:51 +08:00
Copyright
=========
2025-03-12 21:35:59 +08:00
Copyright (c) 1998-2025 The OpenSSL Project Authors
2019-11-29 06:10:51 +08:00
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
All rights reserved.
2019-11-30 03:45:28 +08:00
<!-- Links -->
[www.openssl.org]:
2020-05-07 19:44:01 +08:00
< https: / / www . openssl . org >
2019-11-30 03:45:28 +08:00
"OpenSSL Homepage"
[github.com/openssl/openssl]:
2020-05-07 19:44:01 +08:00
< https: / / github . com / openssl / openssl >
2019-11-30 03:45:28 +08:00
"OpenSSL GitHub Mirror"
2025-03-15 00:44:55 +08:00
[GitHub Wiki]:
< https: / / github . com / openssl / openssl / wiki >
2019-11-30 03:45:28 +08:00
"OpenSSL Wiki"
2023-08-22 18:56:30 +08:00
[ossl-guide-migration(7ossl)]:
2025-04-10 13:04:41 +08:00
< https: / / docs . openssl . org / master / man7 / ossl-guide-migration >
2022-03-09 00:36:37 +08:00
"OpenSSL Migration Guide"
2020-10-17 16:40:25 +08:00
2019-11-30 03:45:28 +08:00
[RFC 8446]:
2020-05-07 19:44:01 +08:00
< https: / / tools . ietf . org / html / rfc8446 >
2019-11-30 03:45:28 +08:00
2023-10-25 18:10:51 +08:00
[RFC 6347]:
< https: / / tools . ietf . org / html / rfc6347 >
[RFC 9000]:
< https: / / tools . ietf . org / html / rfc9000 >
[Binaries]:
2025-03-15 00:44:55 +08:00
< https: / / github . com / openssl / openssl / wiki / Binaries >
2023-10-25 18:10:51 +08:00
"List of third party OpenSSL binaries"
[OpenSSL Guide]:
2025-04-10 13:04:41 +08:00
< https: / / docs . openssl . org / master / man7 / ossl-guide-introduction >
2023-10-25 18:10:51 +08:00
"An introduction to OpenSSL"
2019-11-30 03:45:28 +08:00
<!-- Logos and Badges -->
[openssl logo]:
doc/images/openssl.svg
"OpenSSL Logo"
2021-01-24 15:42:52 +08:00
[github actions ci badge]:
< https: / / github . com / openssl / openssl / workflows / GitHub % 20CI / badge . svg >
"GitHub Actions CI Status"
2019-11-30 03:45:28 +08:00
2021-01-24 15:42:52 +08:00
[github actions ci]:
2025-05-10 16:05:10 +08:00
< https: / / github . com / openssl / openssl / actions / workflows / ci . yml >
2021-01-24 15:42:52 +08:00
"GitHub Actions CI"
2019-11-30 03:45:28 +08:00
[appveyor badge]:
2020-07-03 02:00:03 +08:00
< https: / / ci . appveyor . com / api / projects / status / 8e10o7xfrg73v98f / branch / master ? svg = true >
2019-11-30 03:45:28 +08:00
"AppVeyor Build Status"
[appveyor jobs]:
2020-05-07 19:44:01 +08:00
< https: / / ci . appveyor . com / project / openssl / openssl / branch / master >
2019-11-30 03:45:28 +08:00
"AppVeyor Jobs"