diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index fa99e12b..34a9d9b9 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -19,8 +19,8 @@ jobs:
     env:
       MAKEFLAGS: -j3
       LZO_VERSION: "2.10"
-      PKCS11_HELPER_VERSION: "1.26"
-      OPENSSL_VERSION: "1.1.1j"
+      PKCS11_HELPER_VERSION: "1.29.0"
+      OPENSSL_VERSION: "1.1.1n"
       TAP_WINDOWS_VERSION: "9.23.3"
       CHOST: ${{ matrix.chost }}
       TARGET: ${{ matrix.target }}
@@ -46,20 +46,20 @@ jobs:
         uses: actions/cache@v2
         with:
           path: '~/mingw/'
-          key: ${{ matrix.target }}-mingw-${{ env.LZO_VERSION }}-${{ env.PKCS11_HELPER_VERSION }}-${{ env.TAP_WINDOWS_VERSION }}
+          key: ${{ matrix.target }}-mingw-${{ env.OPENSSL_VERSION }}-${{ env.LZO_VERSION }}-${{ env.PKCS11_HELPER_VERSION }}-${{ env.TAP_WINDOWS_VERSION }}

       # Repeating  if: steps.cache.outputs.cache-hit != 'true'
       # on every step for building dependencies is ugly but
       # I haven't found a better solution so far.

-      - name: Download mingw depnendencies
+      - name: Download mingw dependencies
         if: steps.cache.outputs.cache-hit != 'true'
         run: |
           wget -c -P download-cache/ "https://build.openvpn.net/downloads/releases/tap-windows-${TAP_WINDOWS_VERSION}.zip"
           wget -c -P download-cache/ "https://www.oberhumer.com/opensource/lzo/download/lzo-${LZO_VERSION}.tar.gz"
-          wget -c -P download-cache/ "https://github.com/OpenSC/pkcs11-helper/archive/pkcs11-helper-${PKCS11_HELPER_VERSION}.tar.gz"
-          wget -c -P download-cache/ "https://www.openssl.org/source/old/1.1.1/openssl-${OPENSSL_VERSION}.tar.gz"
-          tar zxf "download-cache/pkcs11-helper-${PKCS11_HELPER_VERSION}.tar.gz"
+          wget -c -P download-cache/ "https://github.com/OpenSC/pkcs11-helper/releases/download/pkcs11-helper-${PKCS11_HELPER_VERSION}/pkcs11-helper-${PKCS11_HELPER_VERSION}.tar.bz2"
+          wget -c -P download-cache/ "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz"
+          tar jxf "download-cache/pkcs11-helper-${PKCS11_HELPER_VERSION}.tar.bz2"
           tar zxf "download-cache/openssl-${OPENSSL_VERSION}.tar.gz"
           tar zxf "download-cache/lzo-${LZO_VERSION}.tar.gz"
           unzip download-cache/tap-windows-${TAP_WINDOWS_VERSION}.zip
@@ -67,56 +67,56 @@ jobs:
       - name: Configure OpenSSL
         if: steps.cache.outputs.cache-hit != 'true'
         run: ./Configure --cross-compile-prefix=${CHOST}- shared ${{ matrix.target }} no-capieng --prefix="${HOME}/mingw/opt" --openssldir="${HOME}/mingw/opt" -static-libgcc
-        working-directory: "./openssl-1.1.1j"
+        working-directory: "./openssl-${{ env.OPENSSL_VERSION }}"

       - name: Build OpenSSL
         if: steps.cache.outputs.cache-hit != 'true'
         run: make
-        working-directory: "./openssl-1.1.1j/"
+        working-directory: "./openssl-${{ env.OPENSSL_VERSION }}"

       - name: Install OpenSSL
         if: steps.cache.outputs.cache-hit != 'true'
         run: make install
-        working-directory: "./openssl-1.1.1j/"
+        working-directory: "./openssl-${{ env.OPENSSL_VERSION }}"

       - name: autoreconf pkcs11-helper
         if: steps.cache.outputs.cache-hit != 'true'
         run: autoreconf -iv
-        working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
+        working-directory: "./pkcs11-helper-${{ env.PKCS11_HELPER_VERSION }}"

       - name: configure pkcs11-helper
         if: steps.cache.outputs.cache-hit != 'true'
         run: OPENSSL_LIBS="-L${HOME}/mingw/opt/lib -lssl -lcrypto" OPENSSL_CFLAGS=-I$HOME/mingw/opt/include PKG_CONFIG_PATH=${HOME}/mingw/opt/lib/pkgconfig ./configure --host=${CHOST} --program-prefix='' --libdir=${HOME}/mingw/opt/lib --prefix=${HOME}/mingw/opt --build=x86_64-pc-linux-gnu --disable-crypto-engine-gnutls --disable-crypto-engine-nss --disable-crypto-engine-polarssl --disable-crypto-engine-mbedtls
-        working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
+        working-directory: "./pkcs11-helper-${{ env.PKCS11_HELPER_VERSION }}"

       - name: build pkcs11-helper
         if: steps.cache.outputs.cache-hit != 'true'
         run: make all
-        working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
+        working-directory: "./pkcs11-helper-${{ env.PKCS11_HELPER_VERSION }}"

       - name: install pkcs11-helper
         if: steps.cache.outputs.cache-hit != 'true'
         run: make install
-        working-directory: "./pkcs11-helper-pkcs11-helper-1.26"
+        working-directory: "./pkcs11-helper-${{ env.PKCS11_HELPER_VERSION }}"

       - name: Configure lzo
         if: steps.cache.outputs.cache-hit != 'true'
         run: ./configure --host=${CHOST} --program-prefix='' --libdir=${HOME}/mingw/opt/lib --prefix=${HOME}/mingw/opt --build=x86_64-pc-linux-gnu
-        working-directory: "./lzo-2.10"
+        working-directory: "./lzo-${{ env.LZO_VERSION }}"

       - name: build lzo
         if: steps.cache.outputs.cache-hit != 'true'
-        working-directory: "./lzo-2.10"
+        working-directory: "./lzo-${{ env.LZO_VERSION }}"
         run: make

       - name: install lzo
         if: steps.cache.outputs.cache-hit != 'true'
-        working-directory: "./lzo-2.10"
+        working-directory: "./lzo-${{ env.LZO_VERSION }}"
         run: make install

       - name: copy tap-windows.h header
         if: steps.cache.outputs.cache-hit != 'true'
-        run: cp ./tap-windows-9.23.3/include/tap-windows.h ${HOME}/mingw/opt/include/
+        run: cp ./tap-windows-${TAP_WINDOWS_VERSION}/include/tap-windows.h ${HOME}/mingw/opt/include/

       - name: configure OpenVPN
         run: PKG_CONFIG_PATH=${HOME}/mingw/opt/lib/pkgconfig DCO_SOURCEDIR=$(realpath ../ovpn-dco-win) LDFLAGS=-L$HOME/mingw/opt/lib CFLAGS=-I$HOME/mingw/opt/include OPENSSL_LIBS="-L${HOME}/opt/lib -lssl -lcrypto" OPENSSL_CFLAGS=-I$HOME/mingw/opt/include PREFIX=$HOME/mingw/opt LZO_CFLAGS=-I$HOME/mingw/opt/include LZO_LIBS="-L${HOME}/mingw/opt/lib -llzo2" ./configure  --host=${CHOST} --disable-lz4 --enable-dco
