diff --git a/src/jamidht/archive_account_manager.cpp b/src/jamidht/archive_account_manager.cpp
index 7cf0edb0f48f596e693d4e11acc24ee5e08524e3..0fc8c299aff6e8473126f5fad72c53026ed61357 100644
--- a/src/jamidht/archive_account_manager.cpp
+++ b/src/jamidht/archive_account_manager.cpp
@@ -527,6 +527,10 @@ ArchiveAccountManager::syncDevices()
         // don't send sync data to ourself
         if (dev.first.toString() == info_->deviceId)
             continue;
+        if (!dev.second.certificate) {
+            JAMI_WARNING("Cannot find certificate for {}", dev.first);
+            continue;
+        }
         auto pk = dev.second.certificate->getSharedPublicKey();
         JAMI_DBG("sending device sync to %s %s",
                  dev.second.name.c_str(),
diff --git a/src/jamidht/contact_list.cpp b/src/jamidht/contact_list.cpp
index 187bc3263726cc3b5ef4e04d6a1c2c17a5b183c6..5f299cb5554b9807555da18916879648842d2237 100644
--- a/src/jamidht/contact_list.cpp
+++ b/src/jamidht/contact_list.cpp
@@ -595,6 +595,10 @@ ContactList::getSyncData() const
     }
 
     for (const auto& dev : knownDevices_) {
+        if (!dev.second.certificate) {
+            JAMI_WARNING("No certificate found for {}", dev.first);
+            continue;
+        }
         sync_data.devices.emplace(dev.second.certificate->getLongId(),
                                   KnownDeviceSync {dev.second.name,
                                                    dev.second.certificate->getId()});