Here you'll learn how to compile OpenSSL for different platforms.
| Target | Platform | Guide |
|---|---|---|
| .NET on Windows | Windows x64 | Windows x64 Build |
| FIPS 140-3 Compliance | Windows x64 | FIPS Build |
| Blazor WebAssembly | WASM | WASM/Blazor Build |
| Docker/Container | Linux | Linux Build (WSL) |
Not sure? Start with the Windows x64 Build - it covers most use cases.
Do I need FIPS?
Do I need WASM?
The most common build for .NET applications:
perl Configure VC-WIN64A --prefix=D:\Projects\openssl-3.6.0\bin nmake nmake install_sw
Result:
libcrypto-3-x64.dll - Cryptography librarylibssl-3-x64.dll - TLS libraryopenssl.exe - Command line toolFor FIPS 140-3 compliance:
perl Configure VC-WIN64A enable-fips --prefix=D:\Projects\openssl-3.6.0\bin nmake nmake install_sw install_fips
Additional result:
fips.dll - FIPS Provider Modulefipsmodule.cnf - FIPS ConfigurationFor Blazor WebAssembly:
# In WSL with Emscripten emconfigure ./Configure linux-generic32 no-asm no-threads no-shared emmake make
Result:
openssl.js - JavaScript wrapperopenssl.wasm - WebAssembly moduleFor Docker containers or Linux servers:
./Configure linux-x86_64 --prefix=/opt/openssl make -j$(nproc) make install
Result:
libcrypto.so.3 - Shared librarylibssl.so.3 - TLS library
The most important Configure options:
| Option | Description |
|---|---|
VC-WIN64A | Target: Visual C++, Windows 64-bit |
linux-x86_64 | Target: Linux 64-bit |
–prefix=<path> | Installation directory |
–openssldir=<path> | Configuration directory |
no-asm | No assembly (slower, but without NASM) |
no-shared | Static libraries only |
enable-fips | Enable FIPS provider |
no-threads | No thread support (for WASM) |
| Platform | Hardware | Duration |
|---|---|---|
| Windows x64 | i7, 16GB RAM | 10-15 min |
| Windows x64 | i5, 8GB RAM | 20-30 min |
| WASM | Any | 5-10 min |
| Linux | 4 cores | 5-10 min |
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional