diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,6 +23,7 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
 endif()
 
 option(BOOST_COBALT_USE_BOOST_CONTAINER "Boost.Cobalt: Use boost.container instead of std::pmr" ${BOOST_COBALT_SHOULD_USE_CONTAINER})
+option(BOOST_COBALT_ENABLE_IO_SSL "Boost.Cobalt: Build boost_cobalt_io_ssl target" ON)
 
 if (NOT BOOST_COBALT_IS_ROOT)
     # Generated by `boostdep --cmake cobalt`
@@ -112,16 +113,29 @@ if (NOT BOOST_COBALT_IS_ROOT)
     target_compile_definitions(boost_cobalt_io PRIVATE BOOST_COBALT_IO_SOURCE=1)
     add_library(Boost::cobalt::io ALIAS boost_cobalt_io)
 
-    find_package(OpenSSL)
+    if (BOOST_COBALT_ENABLE_IO_SSL)
+        find_package(OpenSSL CONFIG REQUIRED)
 
-    if (OPENSSL_FOUND)
-        add_library(boost_cobalt_io_ssl
-                   src/io/ssl.cpp
-        )
+        add_library(boost_cobalt_io_ssl
+                   src/io/ssl.cpp
+        )
+
+        target_link_libraries(boost_cobalt_io_ssl PUBLIC boost_cobalt_io OpenSSL::SSL OpenSSL::Crypto)
+        target_compile_definitions(boost_cobalt_io_ssl PRIVATE BOOST_COBALT_SSL_SOURCE=1)
+        add_library(Boost::cobalt::io::ssl ALIAS boost_cobalt_io_ssl)
+    endif()
+
+    if (BOOST_SUPERPROJECT_VERSION AND NOT CMAKE_VERSION VERSION_LESS 3.13)
+        set(boost_cobalt_install_targets boost_cobalt boost_cobalt_io)
+        if (TARGET boost_cobalt_io_ssl)
+            list(APPEND boost_cobalt_install_targets boost_cobalt_io_ssl)
+        endif()
 
-        target_link_libraries(boost_cobalt_io_ssl PUBLIC boost_cobalt_io OpenSSL::SSL OpenSSL::Crypto)
-        target_compile_definitions(boost_cobalt_io_ssl PRIVATE BOOST_COBALT_SSL_SOURCE=1)
-        add_library(Boost::cobalt::io::ssl ALIAS boost_cobalt_io_ssl)
+        boost_install(
+            TARGETS ${boost_cobalt_install_targets}
+            VERSION "${BOOST_SUPERPROJECT_VERSION}"
+            HEADER_DIRECTORY include
+        )
     endif()
 
     if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
@@ -244,18 +258,23 @@ else()
     target_compile_definitions(boost_cobalt_io PRIVATE BOOST_COBALT_IO_SOURCE=1)
     add_library(Boost::cobalt::io ALIAS boost_cobalt_io)
 
-    find_package(OpenSSL)
+    if (BOOST_COBALT_ENABLE_IO_SSL)
+        find_package(OpenSSL CONFIG REQUIRED)
 
-    if (OPENSSL_FOUND)
-        add_library(boost_cobalt_io_ssl src/io/ssl.cpp)
+        add_library(boost_cobalt_io_ssl src/io/ssl.cpp)
 
-        target_link_libraries(boost_cobalt_io_ssl PUBLIC boost_cobalt_io OpenSSL::SSL OpenSSL::Crypto)
-        target_compile_definitions(boost_cobalt_io_ssl PRIVATE BOOST_COBALT_SSL_SOURCE=1)
-        add_library(Boost::cobalt::io::ssl ALIAS boost_cobalt_io_ssl)
+        target_link_libraries(boost_cobalt_io_ssl PUBLIC boost_cobalt_io OpenSSL::SSL OpenSSL::Crypto)
+        target_compile_definitions(boost_cobalt_io_ssl PRIVATE BOOST_COBALT_SSL_SOURCE=1)
+        add_library(Boost::cobalt::io::ssl ALIAS boost_cobalt_io_ssl)
     endif()
 
     if(BOOST_COBALT_INSTALL AND NOT BOOST_SUPERPROJECT_VERSION)
-        install(TARGETS boost_cobalt boost_cobalt_io
+        set(boost_cobalt_install_targets boost_cobalt boost_cobalt_io)
+        if (TARGET boost_cobalt_io_ssl)
+            list(APPEND boost_cobalt_install_targets boost_cobalt_io_ssl)
+        endif()
+
+        install(TARGETS ${boost_cobalt_install_targets}
                 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
                 LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
                 ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
