xref: /openssl/README.md (revision 6f2c97d5)
1Welcome to the OpenSSL Project
2==============================
3
4[![openssl logo]][www.openssl.org]
5
6[![github actions ci badge]][github actions ci]
7![Nightly OS Zoo ci badge](https://github.com/openssl/openssl/actions/workflows/os-zoo.yml/badge.svg)
8![Provider Compatibility](https://github.com/openssl/openssl/actions/workflows/provider-compatibility.yml/badge.svg)
9![Quic Interop](https://github.com/openssl/openssl/actions/workflows/run_quic_interop.yml/badge.svg)
10![Daily checks](https://github.com/openssl/openssl/actions/workflows/run-checker-daily.yml/badge.svg)
11
12OpenSSL is a robust, commercial-grade, full-featured Open Source Toolkit
13for the TLS (formerly SSL), DTLS and QUIC (currently client side only)
14protocols.
15
16The protocol implementations are based on a full-strength general purpose
17cryptographic library, which can also be used stand-alone. Also included is a
18cryptographic module validated to conform with FIPS standards.
19
20OpenSSL is descended from the SSLeay library developed by Eric A. Young
21and Tim J. Hudson.
22
23The official Home Page of the OpenSSL Project is [www.openssl.org].
24
25Table of Contents
26=================
27
28 - [Overview](#overview)
29 - [Download](#download)
30 - [Build and Install](#build-and-install)
31 - [Documentation](#documentation)
32 - [License](#license)
33 - [Support](#support)
34 - [Contributing](#contributing)
35 - [Legalities](#legalities)
36
37Overview
38========
39
40The OpenSSL toolkit includes:
41
42- **libssl**
43  an implementation of all TLS protocol versions up to TLSv1.3 ([RFC 8446]),
44  DTLS protocol versions up to DTLSv1.2 ([RFC 6347]) and
45  the QUIC (currently client side only) version 1 protocol ([RFC 9000]).
46
47- **libcrypto**
48  a full-strength general purpose cryptographic library. It constitutes the
49  basis of the TLS implementation, but can also be used independently.
50
51- **openssl**
52  the OpenSSL command line tool, a swiss army knife for cryptographic tasks,
53  testing and analyzing. It can be used for
54  - creation of key parameters
55  - creation of X.509 certificates, CSRs and CRLs
56  - calculation of message digests
57  - encryption and decryption
58  - SSL/TLS/DTLS and client and server tests
59  - QUIC client tests
60  - handling of S/MIME signed or encrypted mail
61  - and more...
62
63Download
64========
65
66For Production Use
67------------------
68
69Source code tarballs of the official releases can be downloaded from
70[www.openssl.org/source](https://www.openssl.org/source).
71The OpenSSL project does not distribute the toolkit in binary form.
72
73However, for a large variety of operating systems precompiled versions
74of the OpenSSL toolkit are available. In particular, on Linux and other
75Unix operating systems, it is normally recommended to link against the
76precompiled shared libraries provided by the distributor or vendor.
77
78We also maintain a list of third parties that produce OpenSSL binaries for
79various Operating Systems (including Windows) on the [Binaries] page on our
80wiki.
81
82For Testing and Development
83---------------------------
84
85Although testing and development could in theory also be done using
86the source tarballs, having a local copy of the git repository with
87the entire project history gives you much more insight into the
88code base.
89
90The official OpenSSL Git Repository is located at [git.openssl.org].
91There is a GitHub mirror of the repository at [github.com/openssl/openssl],
92which is updated automatically from the former on every commit.
93
94A local copy of the Git Repository can be obtained by cloning it from
95the original OpenSSL repository using
96
97    git clone git://git.openssl.org/openssl.git
98
99or from the GitHub mirror using
100
101    git clone https://github.com/openssl/openssl.git
102
103If you intend to contribute to OpenSSL, either to fix bugs or contribute
104new features, you need to fork the OpenSSL repository openssl/openssl on
105GitHub and clone your public fork instead.
106
107    git clone https://github.com/yourname/openssl.git
108
109This is necessary because all development of OpenSSL nowadays is done via
110GitHub pull requests. For more details, see [Contributing](#contributing).
111
112Build and Install
113=================
114
115After obtaining the Source, have a look at the [INSTALL](INSTALL.md) file for
116detailed instructions about building and installing OpenSSL. For some
117platforms, the installation instructions are amended by a platform specific
118document.
119
120 * [Notes for UNIX-like platforms](NOTES-UNIX.md)
121 * [Notes for Android platforms](NOTES-ANDROID.md)
122 * [Notes for Windows platforms](NOTES-WINDOWS.md)
123 * [Notes for the DOS platform with DJGPP](NOTES-DJGPP.md)
124 * [Notes for the OpenVMS platform](NOTES-VMS.md)
125 * [Notes on Perl](NOTES-PERL.md)
126 * [Notes on Valgrind](NOTES-VALGRIND.md)
127
128Specific notes on upgrading to OpenSSL 3.x from previous versions can be found
129in the [ossl-guide-migration(7ossl)] manual page.
130
131Documentation
132=============
133
134README Files
135------------
136
137There are some README.md files in the top level of the source distribution
138containing additional information on specific topics.
139
140 * [Information about the OpenSSL QUIC protocol implementation](README-QUIC.md)
141 * [Information about the OpenSSL Provider architecture](README-PROVIDERS.md)
142 * [Information about using the OpenSSL FIPS validated module](README-FIPS.md)
143 * [Information about the legacy OpenSSL Engine architecture](README-ENGINES.md)
144
145The OpenSSL Guide
146-----------------
147
148There are some tutorial and introductory pages on some important OpenSSL topics
149within the [OpenSSL Guide].
150
151Manual Pages
152------------
153
154The manual pages for the master branch and all current stable releases are
155available online.
156
157- [OpenSSL master](https://www.openssl.org/docs/manmaster)
158- [OpenSSL 3.0](https://www.openssl.org/docs/man3.0)
159- [OpenSSL 3.1](https://www.openssl.org/docs/man3.1)
160- [OpenSSL 3.2](https://www.openssl.org/docs/man3.2)
161
162Demos
163-----
164
165There are numerous source code demos for using various OpenSSL capabilities in the
166[demos subfolder](./demos).
167
168Wiki
169----
170
171There is a Wiki at [wiki.openssl.org] which is currently not very active.
172It contains a lot of useful information, not all of which is up-to-date.
173
174License
175=======
176
177OpenSSL is licensed under the Apache License 2.0, which means that
178you are free to get and use it for commercial and non-commercial
179purposes as long as you fulfill its conditions.
180
181See the [LICENSE.txt](LICENSE.txt) file for more details.
182
183Support
184=======
185
186There are various ways to get in touch. The correct channel depends on
187your requirement. See the [SUPPORT](SUPPORT.md) file for more details.
188
189Contributing
190============
191
192If you are interested and willing to contribute to the OpenSSL project,
193please take a look at the [CONTRIBUTING](CONTRIBUTING.md) file.
194
195Legalities
196==========
197
198A number of nations restrict the use or export of cryptography. If you are
199potentially subject to such restrictions, you should seek legal advice before
200attempting to develop or distribute cryptographic code.
201
202Copyright
203=========
204
205Copyright (c) 1998-2024 The OpenSSL Project Authors
206
207Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
208
209All rights reserved.
210
211<!-- Links  -->
212
213[www.openssl.org]:
214    <https://www.openssl.org>
215    "OpenSSL Homepage"
216
217[git.openssl.org]:
218    <https://git.openssl.org>
219    "OpenSSL Git Repository"
220
221[git.openssl.org]:
222    <https://git.openssl.org>
223    "OpenSSL Git Repository"
224
225[github.com/openssl/openssl]:
226    <https://github.com/openssl/openssl>
227    "OpenSSL GitHub Mirror"
228
229[wiki.openssl.org]:
230    <https://wiki.openssl.org>
231    "OpenSSL Wiki"
232
233[ossl-guide-migration(7ossl)]:
234    <https://www.openssl.org/docs/manmaster/man7/ossl-guide-migration.html>
235    "OpenSSL Migration Guide"
236
237[RFC 8446]:
238     <https://tools.ietf.org/html/rfc8446>
239
240[RFC 6347]:
241     <https://tools.ietf.org/html/rfc6347>
242
243[RFC 9000]:
244     <https://tools.ietf.org/html/rfc9000>
245
246[Binaries]:
247    <https://wiki.openssl.org/index.php/Binaries>
248    "List of third party OpenSSL binaries"
249
250[OpenSSL Guide]:
251    <https://www.openssl.org/docs/manmaster/man7/ossl-guide-introduction.html>
252    "An introduction to OpenSSL"
253
254<!-- Logos and Badges -->
255
256[openssl logo]:
257    doc/images/openssl.svg
258    "OpenSSL Logo"
259
260[github actions ci badge]:
261    <https://github.com/openssl/openssl/workflows/GitHub%20CI/badge.svg>
262    "GitHub Actions CI Status"
263
264[github actions ci]:
265    <https://github.com/openssl/openssl/actions?query=workflow%3A%22GitHub+CI%22>
266    "GitHub Actions CI"
267
268[appveyor badge]:
269    <https://ci.appveyor.com/api/projects/status/8e10o7xfrg73v98f/branch/master?svg=true>
270    "AppVeyor Build Status"
271
272[appveyor jobs]:
273    <https://ci.appveyor.com/project/openssl/openssl/branch/master>
274    "AppVeyor Jobs"
275