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