Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
239 строки
9.4 KiB
Markdown
239 строки
9.4 KiB
Markdown

|
|
|
|
## Official portable version of [LibreSSL](https://www.libressl.org)
|
|
|
|
[](https://github.com/libressl/portable/actions/workflows/linux.yml)
|
|
[](https://github.com/libressl/portable/actions/workflows/macos.yml)
|
|
[](https://github.com/libressl/portable/actions/workflows/windows.yml)
|
|
[](https://github.com/libressl/portable/actions/workflows/android.yml)
|
|
[](https://github.com/libressl/portable/actions/workflows/solaris.yml)
|
|
[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:libressl)
|
|
|
|
LibreSSL is a fork of [OpenSSL](https://www.openssl.org) 1.0.1g developed by the
|
|
[OpenBSD](https://www.openbsd.org) project. Our goal is to modernize the codebase,
|
|
improve security, and apply best practice development processes from OpenBSD.
|
|
|
|
## Compatibility with OpenSSL
|
|
|
|
LibreSSL provides much of the OpenSSL 1.1 API. The OpenSSL 3 API is not currently
|
|
supported. Incompatibilities between the projects exist and are unavoidable since
|
|
both evolve with different goals and priorities. Important incompatibilities will
|
|
be addressed if possible and as long as they are not too detrimental to LibreSSL's
|
|
goals of simplicity, security and sanity. We do not add new features, ciphers and
|
|
API without a solid reason and require that new code be clean and of high quality.
|
|
|
|
LibreSSL is not ABI compatible with any release of OpenSSL, or necessarily
|
|
earlier releases of LibreSSL. You will need to relink your programs to
|
|
LibreSSL in order to use it, just as in moving between major versions of OpenSSL.
|
|
LibreSSL's installed library version numbers are incremented to account for
|
|
ABI and API changes.
|
|
|
|
## Compatibility with other operating systems
|
|
|
|
While primarily developed on and taking advantage of APIs available on OpenBSD,
|
|
the LibreSSL portable project attempts to provide working alternatives for
|
|
other operating systems, and assists with improving OS-native implementations
|
|
where possible.
|
|
|
|
At the time of this writing, LibreSSL is known to build and work on:
|
|
|
|
* Linux (kernel 3.17 or later recommended)
|
|
* FreeBSD (tested with 9.2 and later)
|
|
* NetBSD (7.0 or later recommended)
|
|
* HP-UX (11i)
|
|
* Solaris 11 and later
|
|
* Mac OS X (tested with 10.8 and later)
|
|
* AIX (5.3 and later)
|
|
* Emscripten (3.1.44 and later)
|
|
|
|
LibreSSL also supports the following Windows environments:
|
|
|
|
* Microsoft Windows (Windows 7 / Windows Server 2008r2 or later, x86 and x64)
|
|
* Wine (32-bit and 64-bit)
|
|
* MinGW-w64, Cygwin, and Visual Studio
|
|
|
|
Official release tarballs are available at your friendly neighborhood
|
|
OpenBSD mirror in directory
|
|
[LibreSSL](https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/),
|
|
although we suggest that you use a [mirror](https://www.openbsd.org/ftp.html).
|
|
|
|
The LibreSSL portable build framework is also
|
|
[mirrored](https://github.com/libressl/portable) on GitHub.
|
|
|
|
Please report bugs either to the public libressl@openbsd.org mailing list,
|
|
or to the GitHub
|
|
[issue tracker](https://github.com/libressl/portable/issues)
|
|
|
|
Severe vulnerabilities or bugs requiring coordination with OpenSSL can be
|
|
sent to the core team at libressl-security@openbsd.org.
|
|
|
|
# Building LibreSSL
|
|
|
|
## Building from a Git checkout
|
|
|
|
If you have checked out this source using Git, or have downloaded a source
|
|
tarball from GitHub, follow these initial steps to prepare the source tree for
|
|
building. _Note: Your build will fail if you do not follow these instructions!
|
|
If you cannot follow these instructions or cannot meet these prerequisites,
|
|
please download an official release distribution from
|
|
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/ instead. Using official
|
|
releases is strongly advised if you are not a developer._
|
|
|
|
1. Ensure that you have a bash shell. This is also required on Windows.
|
|
2. Ensure that you have the following packages installed:
|
|
automake, autoconf, git, libtool, perl.
|
|
3. Run `./autogen.sh` to prepare the source tree for building.
|
|
|
|
## Build steps using configure
|
|
|
|
Once you have the source tree prepared, run these commands to build and install:
|
|
|
|
```sh
|
|
./configure # see ./configure --help for configuration options
|
|
make check # runs builtin unit tests
|
|
make install # set DESTDIR= to install to an alternate location
|
|
```
|
|
|
|
Alternatively, it is possible to run `./dist.sh` to prepare a tarball.
|
|
|
|
## Build steps using CMake
|
|
|
|
Once you have the source tree prepared, run these commands to build and install:
|
|
|
|
```sh
|
|
mkdir build
|
|
cd build
|
|
cmake ..
|
|
make
|
|
make test
|
|
```
|
|
|
|
For faster builds, you can use Ninja:
|
|
|
|
```sh
|
|
mkdir build-ninja
|
|
cd build-ninja
|
|
cmake -G"Ninja" ..
|
|
ninja
|
|
ninja test
|
|
```
|
|
|
|
Or another supported build system like Visual Studio:
|
|
|
|
```sh
|
|
mkdir build-vs2022
|
|
cd build-vs2022
|
|
cmake -G"Visual Studio 17 2022" ..
|
|
```
|
|
|
|
#### Additional CMake Options
|
|
|
|
| Option Name | Default | Description |
|
|
|-------------------------|--------:|-----------------------------------------------------------------------------------------------------------------|
|
|
| `LIBRESSL_SKIP_INSTALL` | `OFF` | allows skipping install() rules. Can be specified from command line using <br>```-DLIBRESSL_SKIP_INSTALL=ON``` |
|
|
| `LIBRESSL_APPS` | `ON` | allows skipping application builds. Apps are required to run tests |
|
|
| `LIBRESSL_TESTS` | `ON` | allows skipping of tests. Tests are only available in static builds |
|
|
| `BUILD_SHARED_LIBS` | `OFF` | CMake option for building shared libraries. |
|
|
| `ENABLE_ASM` | `ON` | builds assembly optimized rules. |
|
|
| `ENABLE_EXTRATESTS` | `OFF` | Enable extra tests that may be unreliable on some platforms |
|
|
| `ENABLE_NC` | `OFF` | Enable installing TLS-enabled nc(1) |
|
|
| `OPENSSLDIR` | Blank | Set the default openssl directory. Can be specified from command line using <br>```-DOPENSSLDIR=<dirname>``` |
|
|
|
|
## Build information for specific systems
|
|
|
|
### HP-UX (11i)
|
|
|
|
Set the UNIX_STD environment variable to `2003` before running `configure`
|
|
in order to build with the HP C/aC++ compiler. See the "standards(5)" man
|
|
page for more details.
|
|
|
|
```sh
|
|
export UNIX_STD=2003
|
|
./configure
|
|
make
|
|
```
|
|
|
|
### MinGW-w64 - Windows
|
|
|
|
LibreSSL builds against relatively recent versions of [MinGW-w64](https://www.mingw-w64.org/), not to be
|
|
confused with the original mingw.org project. MinGW-w64 3.2 or later
|
|
should work. See [README.mingw.md](README.mingw.md) for more information.
|
|
|
|
### Emscripten
|
|
|
|
When configuring LibreSSL for use with Emscripten, make sure to prepend
|
|
`emcmake` to your `cmake` configuration command. Once configured, you can
|
|
proceed with your usual `cmake` commands. For example:
|
|
|
|
```sh
|
|
emcmake cmake . -Bbuild
|
|
cmake --build build --config Release
|
|
ctest --test-dir build -C Release --output-on-failure
|
|
```
|
|
|
|
# Using LibreSSL
|
|
|
|
## CMake
|
|
|
|
Make a new folder in your project root (where your main `CMakeLists.txt` file is
|
|
located) called CMake. Copy the `FindLibreSSL.cmake` file to that folder, and
|
|
add the following line to your main `CMakeLists.txt`:
|
|
|
|
```cmake
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
|
|
```
|
|
|
|
After your `add_executable` or `add_library` line in your `CMakeLists.txt` file
|
|
add the following:
|
|
|
|
```cmake
|
|
find_package(LibreSSL REQUIRED)
|
|
```
|
|
|
|
It will tell CMake to find LibreSSL and if found will let you use the following
|
|
3 interfaces in your `CMakeLists.txt` file:
|
|
|
|
* LibreSSL::Crypto
|
|
* LibreSSL::SSL
|
|
* LibreSSL::TLS
|
|
|
|
If you for example want to use the LibreSSL TLS library in your test program,
|
|
include it like so (SSL and Crypto are required by TLS and included
|
|
automatically too):
|
|
|
|
```cmake
|
|
target_link_libraries(test LibreSSL::TLS)
|
|
```
|
|
|
|
Full example:
|
|
|
|
```cmake
|
|
cmake_minimum_required(VERSION 3.10.0)
|
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
|
|
|
|
project(test)
|
|
|
|
add_executable(test Main.cpp)
|
|
|
|
find_package(LibreSSL REQUIRED)
|
|
|
|
target_link_libraries(test LibreSSL::TLS)
|
|
```
|
|
|
|
#### Linux
|
|
|
|
Following the guide in the sections above to compile LibreSSL using make and
|
|
running `sudo make install` will install LibreSSL to the `/usr/local/` folder,
|
|
and will be found automatically by find_package. If your system installs it to
|
|
another location, or you have placed them yourself in a different location, you
|
|
can set the CMake variable `LIBRESSL_ROOT_DIR` to the correct path, to help
|
|
CMake find the library.
|
|
|
|
#### Windows
|
|
|
|
Placing the library files in `C:/Program Files/LibreSSL/lib` and the include
|
|
files in `C:/Program Files/LibreSSL/include` should let CMake find them
|
|
automatically, but it is recommended that you use CMake-GUI to set the paths.
|
|
It is more convenient as you can have the files in any folder you choose.
|