See the rustdoc output.
rust-openssl depends on both the OpenSSL runtime libraries and headers.
On Linux, you can install OpenSSL via your package manager. The headers are
sometimes provided in a separate package than the runtime libraries - look for
something like openssl-devel
or libssl-dev
.
# On Ubuntu
sudo apt-get install libssl-dev
# On Arch Linux
sudo pacman -S openssl
OpenSSL 0.9.8 is preinstalled on OSX. Some features are only available when linking against OpenSSL 1.0.0 or greater; see below on how to point rust-openssl to a separate installation.
Install OpenSSL from here. Cargo will not be able to find OpenSSL if it's
installed to the default location. You can either copy the include/openssl
directory, libssl32.dll
, and libeay32.dll
to locations that Cargo can find
or pass the location to Cargo via environment variables:
env OPENSSL_LIB_DIR=C:/OpenSSL-Win64 OPENSSL_INCLUDE_DIR=C:/OpenSSL-Win64/include cargo build
rust-openssl's build script will by default attempt to locate OpenSSL via pkg-config. This will not work in some situations, for example, on systems that don't have pkg-config, when cross compiling, or when using a copy of OpenSSL other than the normal system install.
The build script can be configured via environment variables:
OPENSSL_LIB_DIR
- If specified, a directory that will be used to find OpenSSL runtime libraries.OPENSSL_INCLUDE_DIR
- If specified, a directory that will be used to find OpenSSL headers.OPENSSL_STATIC
- If specified, OpenSSL libraries will be statically rather than dynamically linked.
If either OPENSSL_LIB_DIR
or OPENSSL_INCLUDE_DIR
are specified, then the
build script will skip the pkg-config step.
Several tests expect a local test server to be running to bounce requests off
of. It's easy to do this. Open a separate terminal window and cd
to the
rust-openssl directory. Then run one of the following commands:
- Windows:
openssl s_server -accept 15418 -www -cert test/cert.pem -key test/key.pem > NUL
- Linux:
openssl s_server -accept 15418 -www -cert test/cert.pem -key test/key.pem >/dev/null
Then in the original terminal, run cargo test
. If everything is set up
correctly, all tests should pass. You might get some warnings in the openssl s_server
window. Those aren't anything to worry about. You can stop the server
using Control-C.
For DTLS testing each test requires its own instance of OpenSSL's s_server. On
Linux you can run the bash script in openssl/tests/test.sh
.