The libcrypto.so.1.0.0 library is not available in the default repositories for Ubuntu 20.04 because it has been superseded by OpenSSL 1.1. To resolve this issue, you must manually download the specific Debian package from a trusted archive or enable the older Ubuntu 18.04 (Bionic Beaver) repository sources.
Understanding the Library Version Mismatch
Ubuntu 20.04 LTS (Focal Fossa) ships with OpenSSL version 1.1.1, which provides the shared object filelibcrypto.so.1.1. Many legacy applications, particularly older versions of Node.js, Python packages, or proprietary software, were compiled against OpenSSL 1.0.2. These applications specifically request libcrypto.so.1.0.0 at runtime. When you attempt to install them using standard package managers like apt, the system fails because the requested symbol cannot be found in the current libraries.
This mismatch is common when migrating older projects to newer Linux distributions. The error typically manifests as a "cannot open shared object file" message or an unmet dependency error during installation. It is crucial to understand that installing OpenSSL 1.0.2 alongside 1.1.1 requires careful handling to avoid breaking system-level services that rely on the newer version.
Why Standard APT Install Fails
The Ubuntu package manager relies on metadata files that define available software. In the Focal Fossa release, theopenssl and libssl-dev packages point exclusively to version 1.1.1. There is no pre-built binary for libcrypto.so.1.0.0 in the main or universe repositories for this specific release. Attempting to force an installation via apt-get install libcrypto.so.1.0.0 will result in a "package not found" error. Therefore, alternative methods are required to provide this specific dynamic library.
Method 1: Manual Installation via .deb Package
The safest and most isolated approach is to download the Debian package containing the library directly from a reliable source. This method does not modify your system's repository configuration, reducing the risk of unintended side effects.- Download the Package: Obtain the
libssl1.0.0_1.0.2g-1ubuntu4.15_amd64.debfile. You can find this in the Ubuntu Bionic archives or trusted third-party mirrors. Ensure the architecture (amd64, i386, arm64) matches your system. - Install Dependencies: Before installing the main library, ensure you have the necessary dependencies. Run
sudo apt updateto refresh your local package index. - Execute Installation: Use the
dpkgcommand to install the downloaded file. For example:sudo dpkg -i libssl1.0.0_1.0.2g-1ubuntu4.15_amd64.deb. - Fix Broken Dependencies: If the installation reports missing dependencies, run
sudo apt --fix-broken installto automatically resolve them using your existing repositories.
ldconfig -p | grep libcrypto. You should see entries for both libcrypto.so.1.1 and libcrypto.so.1.0.0.
Method 2: Enabling the Bionic Repository
If you need multiple packages from the older 18.04 ecosystem, enabling the Ubuntu Bionic Beaver repository is a more comprehensive solution. This allowsapt to manage the older libraries as part of the standard package lifecycle.
First, add the Bionic repository to your sources list. Open the sources list file using a text editor: sudo nano /etc/apt/sources.list. Add the following line at the end of the file:
deb http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu bionic-updates main restricted universe multiverse
Save the file and exit. Then, update your package list. Because these packages are now considered "untrusted" by your current Focal release, you must specify the release codename during installation to prevent accidental upgrades of core system components. Use the following command to install the specific library:
sudo apt install libssl1.0.0/bionic
This command tells apt to pull the package specifically from the Bionic repository. Once installed, you can remove the added lines from /etc/apt/sources.list if you wish to keep your system clean, though leaving them is generally harmless as long as you do not upgrade unrelated packages from that source.
Verifying the Installation
Regardless of the method chosen, verification is essential. Check if the dynamic linker can locate the library by runningldconfig -p | grep libcrypto.so.1.0.0. Additionally, test the target application to ensure it launches without the previous shared object errors. If the application still fails, check its log output for path-specific issues, as some programs require explicit environment variables pointing to the library location.
For users dealing with broader installation hurdles, such as unmet dependencies on other systems, reviewing general troubleshooting guides can be helpful. See Solving Ubuntu Unmet Dependencies Error for additional context on package management conflicts.
Common Pitfalls and Security Considerations
While resolving this issue, be aware that OpenSSL 1.0.2 reached end-of-life in April 2019. It no longer receives security patches. Using this library exposes your system to known vulnerabilities if it handles sensitive network traffic. It is strongly recommended to isolate applications requiring this library in containers or virtual machines whenever possible. Another common pitfall is mixing architectures. If you are running a 64-bit Ubuntu system but try to install a 32-bit (i386) version of the library, the application may fail to link correctly. Always ensure the package architecture matches your system's kernel architecture. Furthermore, avoid compiling OpenSSL 1.0.2 from source unless absolutely necessary, as this can lead to complex dependency chains that are difficult to maintain.
In cases where hardware compatibility interferes with software installation, such as USB detection issues during setup, understanding the underlying system constraints is vital. Refer to Fresh Ubuntu Installation on HP ProBook 650 G1: USB Detection Issue for insights into hardware-related installation blockers.
Frequently Asked Questions
Will installing libcrypto.so.1.0.0 break my system updates?
No, it will not break system updates if you use the manual .deb method. However, if you enable the Bionic repository, you must be careful not to upgrade core system packages from that older source, which could destabilize your Ubuntu 20.04 installation.
Can I use a symbolic link instead of installing the library?
Creating a symbolic link from libcrypto.so.1.1 to libcrypto.so.1.0.0 is technically possible but highly discouraged. The two libraries have different APIs and internal structures; doing so will likely cause the application to crash immediately due to incompatible function calls.
How do I remove libcrypto.so.1.0.0 after installation?
If you installed via dpkg, use sudo dpkg -r libssl1.0.0. If you enabled the Bionic repository, use sudo apt remove libssl1.0.0. Remember to clear the cache with sudo ldconfig afterward to update the dynamic linker cache.
Is there a way to install this without root privileges?
You can extract the contents of the .deb package into a local directory and set the LD_LIBRARY_PATH environment variable to point to that directory. This allows the application to find the library without modifying the system-wide dynamic linker configuration.
Does this issue affect Ubuntu 22.04 or later?
Yes, the same issue exists in Ubuntu 22.04 and 24.04, which use OpenSSL 3.0. The solutions remain similar, but you may need to look for packages compatible with those specific releases or use containerization strategies to run legacy software.