OpenSSL DLLs for Windows: A collection for developers (e.g. Lazarus)

When developing Windows applications—for example with Lazarus (Free Pascal)—OpenSSL is often required for encrypted network connections. Because Windows does not include these libraries by default, the appropriate DLL files must be distributed with the application.

For my own projects, I have assembled a selection of frequently required OpenSSL files and am making them available for download here.


Package contents

The collection contains files from different OpenSSL branches and for different architectures. The required libraries depend on the age of the project, the components used, and the target platform.

OpenSSL 3.x (64-bit)

These files are required by many newer 64-bit applications and modern HTTP clients:

  • libcrypto-3-x64.dll
  • libssl-3-x64.dll
  • libcrypto.dll — used as a generic fallback name by certain frameworks

OpenSSL 1.1.x (64-bit)

These files are used by 64-bit applications and components that have not yet transitioned to OpenSSL 3.x:

  • libcrypto-1_1-x64.dll
  • libssl-1_1-x64.dll

OpenSSL 1.1.x (32-bit)

These files are required by 32-bit applications, including Lazarus applications compiled for the i386-win32 target:

  • libcrypto-1_1.dll
  • libssl-1_1.dll

Both files must be used together and must not be combined with their 64-bit counterparts.

Older OpenSSL versions (1.0.x)

These files are frequently required by older projects or network components, including certain versions of Indy or Synapse:

  • libeay32.dll
  • ssleay32.dll

The number 32 in these filenames is historical and is not always a reliable indication of the actual architecture. If in doubt, verify the architecture before using the files.


Usage

The safest approach is generally to copy the required DLL pair directly into the directory containing the application executable—that is, next to the .exe file. This keeps the application portable and ensures that it uses the exact libraries with which it was tested.

Keep the following points in mind:

  • A 32-bit application requires 32-bit DLLs.
  • A 64-bit application requires 64-bit DLLs.
  • libssl and libcrypto must come from the same OpenSSL package.
  • Files from different OpenSSL versions must not be mixed.
  • Renaming newer DLLs to older filenames does not make them compatible.
  • Avoid placing the DLLs in Windows system directories, as this can cause version and architecture conflicts.

Security note

Public support for OpenSSL 1.1.1 ended in September 2023. It should only be used when required for compatibility and when migration to a currently supported OpenSSL version is not yet possible.

The older ssleay32.dll and libeay32.dll files date from 2018. They no longer meet current security standards and contain known vulnerabilities. They should only be used to maintain compatibility with existing, preferably isolated, legacy systems.

For new or security-critical applications, use a currently supported OpenSSL release whenever the application and its TLS integration support it.

Download the DLL files

Leave a Reply

Your email address will not be published. Required fields are marked *