diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index 93ebc88..045ad8c 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -292,8 +292,10 @@
         // A connection pool will be created if one does not already exist
         if (client)
         {
-            client->sendData(std::move(msg), destinationUrl, httpHeaders,
-                             boost::beast::http::verb::post);
+            client->sendData(
+                std::move(msg), destinationUrl,
+                static_cast<ensuressl::VerifyCertificate>(verifyCertificate),
+                httpHeaders, boost::beast::http::verb::post);
             return true;
         }
 
@@ -568,6 +570,7 @@
             subValue->id = newSub->id;
             subValue->destinationUrl = newSub->destinationUrl;
             subValue->protocol = newSub->protocol;
+            subValue->verifyCertificate = newSub->verifyCertificate;
             subValue->retryPolicy = newSub->retryPolicy;
             subValue->customText = newSub->customText;
             subValue->eventFormatType = newSub->eventFormatType;
diff --git a/redfish-core/include/redfish_aggregator.hpp b/redfish-core/include/redfish_aggregator.hpp
index bc0300a..649ddb4 100644
--- a/redfish-core/include/redfish_aggregator.hpp
+++ b/redfish-core/include/redfish_aggregator.hpp
@@ -737,8 +737,9 @@
         {
             url.set_query(targetURI.query());
         }
-        client.sendDataWithCallback(std::move(data), url, thisReq.fields(),
-                                    thisReq.method(), cb);
+        client.sendDataWithCallback(std::move(data), url,
+                                    ensuressl::VerifyCertificate::Verify,
+                                    thisReq.fields(), thisReq.method(), cb);
     }
 
     // Forward a request for a collection URI to each known satellite BMC
@@ -759,8 +760,9 @@
                 url.set_query(thisReq.url().query());
             }
             std::string data = thisReq.body();
-            client.sendDataWithCallback(std::move(data), url, thisReq.fields(),
-                                        thisReq.method(), cb);
+            client.sendDataWithCallback(std::move(data), url,
+                                        ensuressl::VerifyCertificate::Verify,
+                                        thisReq.fields(), thisReq.method(), cb);
         }
     }
 
@@ -785,8 +787,9 @@
 
             std::string data = thisReq.body();
 
-            client.sendDataWithCallback(std::move(data), url, thisReq.fields(),
-                                        thisReq.method(), cb);
+            client.sendDataWithCallback(std::move(data), url,
+                                        ensuressl::VerifyCertificate::Verify,
+                                        thisReq.fields(), thisReq.method(), cb);
         }
     }
 
diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
index aebc282..dab53fe 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
@@ -278,6 +278,7 @@
         }
         std::string destUrl;
         std::string protocol;
+        std::optional<bool> verifyCertificate;
         std::optional<std::string> context;
         std::optional<std::string> subscriptionType;
         std::optional<std::string> eventFormatType2;
@@ -294,7 +295,8 @@
                 "EventFormatType", eventFormatType2, "HttpHeaders", headers,
                 "RegistryPrefixes", regPrefixes, "MessageIds", msgIds,
                 "DeliveryRetryPolicy", retryPolicy, "MetricReportDefinitions",
-                mrdJsonArray, "ResourceTypes", resTypes))
+                mrdJsonArray, "ResourceTypes", resTypes, "VerifyCertificate",
+                verifyCertificate))
         {
             return;
         }
@@ -433,6 +435,11 @@
         }
         subValue->protocol = protocol;
 
+        if (verifyCertificate)
+        {
+            subValue->verifyCertificate = *verifyCertificate;
+        }
+
         if (eventFormatType2)
         {
             if (std::ranges::find(supportedEvtFormatTypes, *eventFormatType2) ==
@@ -672,6 +679,8 @@
 
         asyncResp->res.jsonValue["MessageIds"] = subValue->registryMsgIds;
         asyncResp->res.jsonValue["DeliveryRetryPolicy"] = subValue->retryPolicy;
+        asyncResp->res.jsonValue["VerifyCertificate"] =
+            subValue->verifyCertificate;
 
         nlohmann::json::array_t mrdJsonArray;
         for (const auto& mdrUri : subValue->metricReportDefinitions)
@@ -706,9 +715,11 @@
 
         std::optional<std::string> context;
         std::optional<std::string> retryPolicy;
+        std::optional<bool> verifyCertificate;
         std::optional<std::vector<nlohmann::json::object_t>> headers;
 
         if (!json_util::readJsonPatch(req, asyncResp->res, "Context", context,
+                                      "VerifyCertificate", verifyCertificate,
                                       "DeliveryRetryPolicy", retryPolicy,
                                       "HttpHeaders", headers))
         {
@@ -754,6 +765,11 @@
             subValue->retryPolicy = *retryPolicy;
         }
 
+        if (verifyCertificate)
+        {
+            subValue->verifyCertificate = *verifyCertificate;
+        }
+
         EventServiceManager::getInstance().updateSubscriptionData();
     });
     BMCWEB_ROUTE(app, "/redfish/v1/EventService/Subscriptions/<str>/")
