# install OpenSSL locally on Ubuntu

<div data-processed="true" data-subtree="aimfl,mfl" id="bkmrk-to-install-openssl-l" jscontroller="v48bt" jsuid="GsELQe_9" style="display: contents;">To install OpenSSL locally on Ubuntu, you can</div><mark class="HxTRcb" data-processed="true">compile and install it from source by first installing build tools, then downloading and extracting the OpenSSL source code, and finally running the [config](https://www.google.com/search?client=ubuntu-sn&channel=fs&q=config&mstk=AUtExfAjQ3yPV6W7WUvN1VS1YZ9pBgUtBJ4QdQKDpIZ5juCvIk2wvERVtHMHcsG7sW_Hs6PlHQDur1gJCpdmD0A6d7-mxwgga1BBPLCiJCP_WY_V_2NMrAWg5BIFnW-7NDB5DfAUaNZQqAXv71YbpKEid0pdVdtxjQBOMlH7pyEwey68lTqabptCWIixVMfn8xDXDJqUSsxDnktUl0HxFZ2CK_8HoFWfqJkY50_E-cv3b0sOZuIoeTHVfpoYXU5cz9ESn4GbuQ-lLKsaZoru0jJ2skEe&csui=3&ved=2ahUKEwiwqZzJ3_qQAxXZSmwGHUH1NmMQgK4QegQIARAC), [make](https://www.google.com/search?client=ubuntu-sn&channel=fs&q=make&mstk=AUtExfAjQ3yPV6W7WUvN1VS1YZ9pBgUtBJ4QdQKDpIZ5juCvIk2wvERVtHMHcsG7sW_Hs6PlHQDur1gJCpdmD0A6d7-mxwgga1BBPLCiJCP_WY_V_2NMrAWg5BIFnW-7NDB5DfAUaNZQqAXv71YbpKEid0pdVdtxjQBOMlH7pyEwey68lTqabptCWIixVMfn8xDXDJqUSsxDnktUl0HxFZ2CK_8HoFWfqJkY50_E-cv3b0sOZuIoeTHVfpoYXU5cz9ESn4GbuQ-lLKsaZoru0jJ2skEe&csui=3&ved=2ahUKEwiwqZzJ3_qQAxXZSmwGHUH1NmMQgK4QegQIARAD), and [make install](https://www.google.com/search?client=ubuntu-sn&channel=fs&q=make+install&mstk=AUtExfAjQ3yPV6W7WUvN1VS1YZ9pBgUtBJ4QdQKDpIZ5juCvIk2wvERVtHMHcsG7sW_Hs6PlHQDur1gJCpdmD0A6d7-mxwgga1BBPLCiJCP_WY_V_2NMrAWg5BIFnW-7NDB5DfAUaNZQqAXv71YbpKEid0pdVdtxjQBOMlH7pyEwey68lTqabptCWIixVMfn8xDXDJqUSsxDnktUl0HxFZ2CK_8HoFWfqJkY50_E-cv3b0sOZuIoeTHVfpoYXU5cz9ESn4GbuQ-lLKsaZoru0jJ2skEe&csui=3&ved=2ahUKEwiwqZzJ3_qQAxXZSmwGHUH1NmMQgK4QegQIARAE) commands with the appropriate prefix and flags</mark>. For the simplest local installation, download the source, change to the directory, and use [./config --prefix=<s class="iVKwMc" data-processed="true">/openssl --openssldir=</s>/openssl](https://www.google.com/search?client=ubuntu-sn&channel=fs&q=.%2Fconfig+--prefix%3D%2Fopenssl+--openssldir%3D%2Fopenssl&mstk=AUtExfAjQ3yPV6W7WUvN1VS1YZ9pBgUtBJ4QdQKDpIZ5juCvIk2wvERVtHMHcsG7sW_Hs6PlHQDur1gJCpdmD0A6d7-mxwgga1BBPLCiJCP_WY_V_2NMrAWg5BIFnW-7NDB5DfAUaNZQqAXv71YbpKEid0pdVdtxjQBOMlH7pyEwey68lTqabptCWIixVMfn8xDXDJqUSsxDnktUl0HxFZ2CK_8HoFWfqJkY50_E-cv3b0sOZuIoeTHVfpoYXU5cz9ESn4GbuQ-lLKsaZoru0jJ2skEe&csui=3&ved=2ahUKEwiwqZzJ3_qQAxXZSmwGHUH1NmMQgK4QegQIARAF), followed by [make](https://www.google.com/search?client=ubuntu-sn&channel=fs&q=make&mstk=AUtExfAjQ3yPV6W7WUvN1VS1YZ9pBgUtBJ4QdQKDpIZ5juCvIk2wvERVtHMHcsG7sW_Hs6PlHQDur1gJCpdmD0A6d7-mxwgga1BBPLCiJCP_WY_V_2NMrAWg5BIFnW-7NDB5DfAUaNZQqAXv71YbpKEid0pdVdtxjQBOMlH7pyEwey68lTqabptCWIixVMfn8xDXDJqUSsxDnktUl0HxFZ2CK_8HoFWfqJkY50_E-cv3b0sOZuIoeTHVfpoYXU5cz9ESn4GbuQ-lLKsaZoru0jJ2skEe&csui=3&ved=2ahUKEwiwqZzJ3_qQAxXZSmwGHUH1NmMQgK4QegQIARAG) and [make install](https://www.google.com/search?client=ubuntu-sn&channel=fs&q=make+install&mstk=AUtExfAjQ3yPV6W7WUvN1VS1YZ9pBgUtBJ4QdQKDpIZ5juCvIk2wvERVtHMHcsG7sW_Hs6PlHQDur1gJCpdmD0A6d7-mxwgga1BBPLCiJCP_WY_V_2NMrAWg5BIFnW-7NDB5DfAUaNZQqAXv71YbpKEid0pdVdtxjQBOMlH7pyEwey68lTqabptCWIixVMfn8xDXDJqUSsxDnktUl0HxFZ2CK_8HoFWfqJkY50_E-cv3b0sOZuIoeTHVfpoYXU5cz9ESn4GbuQ-lLKsaZoru0jJ2skEe&csui=3&ved=2ahUKEwiwqZzJ3_qQAxXZSmwGHUH1NmMQgK4QegQIARAH), then update your `~/.bash_profile` with the correct `PATH` and `LD_LIBRARY_PATH`.<span class="uJ19be notranslate" data-processed="true" data-wiz-uids="GsELQe_l,GsELQe_m,GsELQe_n"><span class="vKEkVd" data-animation-atomic="" data-processed="true"> </span></span>

<div class="Y3BBE" data-hveid="CAEQAA" data-processed="true" data-sfc-cp="" id="bkmrk-" jsaction="rcuQ6b:&GsELQe_8|npT2md" jscontroller="zcfIf" jsuid="GsELQe_8">  
</div><div class="Fsg96" data-processed="true" data-sfc-cp="" id="bkmrk--1" jsaction="rcuQ6b:&GsELQe_r|npT2md" jscontroller="KHhJQ" jsuid="GsELQe_r">  
</div><div aria-level="3" class="otQkpb" data-animation-nesting="" data-processed="true" data-sfc-cp="" id="bkmrk-method-1%3A-install-fr" jscontroller="a7qCn" jsuid="GsELQe_s" role="heading">Method 1: Install from source to a local directory</div><div aria-level="3" class="otQkpb" data-animation-nesting="" data-processed="true" data-sfc-cp="" id="bkmrk--2" jscontroller="a7qCn" jsuid="GsELQe_s" role="heading">  
</div><div class="Y3BBE" data-hveid="CAMQAA" data-processed="true" data-sfc-cp="" id="bkmrk-this-method-installs" jsaction="rcuQ6b:&GsELQe_w|npT2md" jscontroller="zcfIf" jsuid="GsELQe_w">This method installs a specific version of OpenSSL to a custom directory, like `~/openssl`, so it doesn't interfere with the system-installed version.</div><div class="Y3BBE" data-hveid="CAMQAA" data-processed="true" data-sfc-cp="" id="bkmrk--3" jsaction="rcuQ6b:&GsELQe_w|npT2md" jscontroller="zcfIf" jsuid="GsELQe_w">  
</div><div class="Fsg96" data-processed="true" data-sfc-cp="" id="bkmrk--4" jsaction="rcuQ6b:&GsELQe_11|npT2md" jscontroller="KHhJQ" jsuid="GsELQe_11">  
</div><div class="r1PmQe" data-hveid="CAQQAA" data-processed="true" data-wiz-uids="GsELQe_13,GsELQe_14,GsELQe_15" id="bkmrk-bash" jscontroller="HP6Sjf" jsuid="GsELQe_12"><div data-processed="true"><div class="pHpOfb" data-animation-atomic="" data-processed="true"><div class="vVRw1d" data-processed="true">bash</div></div></div></div>```
# Install build tools
sudo apt update
sudo apt install build-essential zlib1g-dev

# Create a working directory and download OpenSSL source
cd /usr/local/src/
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar -xf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k

# Configure and build (using --prefix to specify local install)
./config --prefix=~/openssl --openssldir=~/openssl
make

# Install to the local directory
make install

```

<div class="Fsg96" data-processed="true" data-sfc-cp="" id="bkmrk--5" jsaction="rcuQ6b:&GsELQe_18|npT2md" jscontroller="KHhJQ" jsuid="GsELQe_18">  
</div><div aria-level="3" class="otQkpb" data-animation-nesting="" data-processed="true" data-sfc-cp="" id="bkmrk-method-2%3A-update-you" jscontroller="a7qCn" jsuid="GsELQe_19" role="heading">Method 2: Update your environment variables</div><div aria-level="3" class="otQkpb" data-animation-nesting="" data-processed="true" data-sfc-cp="" id="bkmrk--6" jscontroller="a7qCn" jsuid="GsELQe_19" role="heading">  
</div><div class="Y3BBE" data-hveid="CAYQAA" data-processed="true" data-sfc-cp="" id="bkmrk-after-installing-fro" jsaction="rcuQ6b:&GsELQe_1d|npT2md" jscontroller="zcfIf" jsuid="GsELQe_1d">After installing from source, you must tell your shell where to find the new binaries and libraries.</div><div class="Y3BBE" data-hveid="CAYQAA" data-processed="true" data-sfc-cp="" id="bkmrk--7" jsaction="rcuQ6b:&GsELQe_1d|npT2md" jscontroller="zcfIf" jsuid="GsELQe_1d">  
</div>1. <span class="T286Pc" data-processed="true" data-sfc-cp="">**Edit the bash profile**:</span><div class="r1PmQe" data-hveid="CAcQAQ" data-processed="true" data-wiz-uids="GsELQe_1m,GsELQe_1n,GsELQe_1o" jscontroller="HP6Sjf" jsuid="GsELQe_1l"><div data-processed="true"><div class="pHpOfb" data-animation-atomic="" data-processed="true"><div class="vVRw1d" data-processed="true">bash</div></div></div></div>
2. ```
    nano ~/.bash_profile
    
    ```
3. <span class="T286Pc" data-processed="true" data-sfc-cp="">**Add the following lines at the end of the file** (adjusting `username` if necessary):</span><div class="r1PmQe" data-hveid="CAcQBA" data-processed="true" data-wiz-uids="GsELQe_1w,GsELQe_1x,GsELQe_1y" jscontroller="HP6Sjf" jsuid="GsELQe_1v"><div data-processed="true"><div class="pHpOfb" data-animation-atomic="" data-processed="true"><div class="vVRw1d" data-processed="true">bash</div></div></div></div>
4. ```
    export PATH=$HOME/openssl/bin:$PATH
    export LD_LIBRARY_PATH=$HOME/openssl/lib:$LD_LIBRARY_PATH
    export LDFLAGS="-L $HOME/openssl/lib -Wl,-rpath,$HOME/openssl/lib"
    
    ```
5. <span class="T286Pc" data-processed="true" data-sfc-cp="">**Save and close** the file, then reload your profile:</span><div class="r1PmQe" data-hveid="CAcQBw" data-processed="true" data-wiz-uids="GsELQe_25,GsELQe_26,GsELQe_27" jscontroller="HP6Sjf" jsuid="GsELQe_24"><div data-processed="true"><div class="pHpOfb" data-animation-atomic="" data-processed="true"><div class="vVRw1d" data-processed="true">bash</div></div></div></div>

```
source ~/.bash_profile

```

<div class="Fsg96" data-processed="true" data-sfc-cp="" id="bkmrk--8" jsaction="rcuQ6b:&GsELQe_2d|npT2md" jscontroller="KHhJQ" jsuid="GsELQe_2d">  
</div><div aria-level="3" class="otQkpb" data-animation-nesting="" data-processed="true" data-sfc-cp="" id="bkmrk-method-3%3A-verify-the" jscontroller="a7qCn" jsuid="GsELQe_2e" role="heading">Method 3: Verify the installation</div><div aria-level="3" class="otQkpb" data-animation-nesting="" data-processed="true" data-sfc-cp="" id="bkmrk--9" jscontroller="a7qCn" jsuid="GsELQe_2e" role="heading">  
</div>1. <span class="T286Pc" data-processed="true" data-sfc-cp="">**Check the version** to ensure you are using the new installation:</span><div class="r1PmQe" data-hveid="CAsQAQ" data-processed="true" data-wiz-uids="GsELQe_44,GsELQe_45,GsELQe_46" jscontroller="HP6Sjf" jsuid="GsELQe_43"><div data-processed="true"><div class="pHpOfb" data-animation-atomic="" data-processed="true"><div class="vVRw1d" data-processed="true">bash</div></div></div></div>
2. ```
    openssl version
    
    ```
    
    <span class="T286Pc" data-processed="true" data-sfc-cp="">This should output the version you installed (e.g., `OpenSSL 1.1.1k 25 Mar 2025`).</span>

<span data-processed="true" id="bkmrk-verify-the-path-to-c-1"><span class="T286Pc" data-sfc-cp="">**Verify the path** to confirm it's the local one:</span>bash</span>

```
which openssl

```

<span data-processed="true" id="bkmrk-this-should-point-to-1"><span class="T286Pc" data-sfc-cp="">This should point to `~/openssl/bin/openssl`</span></span>