--- a/client/cmake/3rdparty.cmake
+++ b/client/cmake/3rdparty.cmake
@@ -7,11 +7,7 @@

 include(${CLIENT_ROOT_DIR}/3rd/qrcodegen/qrcodegen.cmake)

-add_compile_definitions(_WINSOCKAPI_)
-
-set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
-set(BUILD_WITH_QT6 ON)
-add_subdirectory(${CLIENT_ROOT_DIR}/3rd/qtkeychain ${CMAKE_BINARY_DIR}/3rd/qtkeychain EXCLUDE_FROM_ALL)
+find_package(Qt6Keychain REQUIRED)

 if(ANDROID)
     # Use qtgamepad from amnezia-vpn/qtgamepad repository
@@ -36,15 +32,10 @@
     endif()
 endif()

-set(LIBS ${LIBS} qt6keychain)
-
-include_directories(
-    ${CLIENT_ROOT_DIR}/3rd/qtkeychain/qtkeychain
-    ${CMAKE_CURRENT_BINARY_DIR}/3rd/qtkeychain
-)
+set(LIBS ${LIBS} Qt6Keychain::Qt6Keychain)

 find_package(OpenSSL REQUIRED)
 list(APPEND LIBS OpenSSL::SSL OpenSSL::Crypto)

 find_package(libssh REQUIRED)
-list(APPEND LIBS ssh::ssh)
+list(APPEND LIBS ssh)
--- a/service/server/CMakeLists.txt
+++ b/service/server/CMakeLists.txt
@@ -15,6 +15,7 @@

 find_package(Qt6 REQUIRED COMPONENTS DBus Core Network Widgets RemoteObjects Core5Compat Concurrent)
 qt_standard_project_setup()
+find_package(Qt6Keychain REQUIRED)

 configure_file(${CMAKE_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)

@@ -181,7 +182,7 @@
         gdi32
         Advapi32
         Kernel32
-        qt6keychain
+        Qt6Keychain::Qt6Keychain
     )

     add_compile_definitions(_WINSOCKAPI_)
@@ -229,7 +230,7 @@

     set(LIBS
         resolv
-        qt6keychain
+        Qt6Keychain::Qt6Keychain
     )

 endif()
@@ -266,8 +267,7 @@
     )

     set(LIBS
-        ${OPENSSL_LIB_CRYPTO_PATH}
-        qt6keychain
+        Qt6Keychain::Qt6Keychain
         -static-libstdc++
         -static-libgcc
         -ldl
