Skip to content
This repository was archived by the owner on Dec 5, 2025. It is now read-only.

Commit 1453a37

Browse files
author
Samuel Hassine
committed
[client] Support SSL connection for RabbitMQ
1 parent 6c10c2a commit 1453a37

File tree

2 files changed

+39
-9
lines changed

2 files changed

+39
-9
lines changed

pycti/api/opencti_api_connector.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ def list(self) -> Dict:
2828
config {
2929
connection {
3030
host
31+
use_ssl
3132
port
3233
user
3334
pass
@@ -82,6 +83,7 @@ def register(self, connector: OpenCTIConnector) -> Dict:
8283
config {
8384
connection {
8485
host
86+
use_ssl
8587
port
8688
user
8789
pass

pycti/connector/opencti_connector_helper.py

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import time
1111
import base64
1212
import os
13+
import ssl
1314

1415
from typing import Callable, Dict, Optional, Union
1516
from sseclient import SSEClient
@@ -76,6 +77,7 @@ def __init__(self, helper, config: dict, callback):
7677
self.helper = helper
7778
self.callback = callback
7879
self.host = config["connection"]["host"]
80+
self.use_ssl = config["connection"]["use_ssl"]
7981
self.port = config["connection"]["port"]
8082
self.user = config["connection"]["user"]
8183
self.password = config["connection"]["pass"]
@@ -135,9 +137,23 @@ def run(self):
135137
try:
136138
# Connect the broker
137139
self.pika_credentials = pika.PlainCredentials(self.user, self.password)
138-
self.pika_parameters = pika.ConnectionParameters(
139-
self.host, self.port, "/", self.pika_credentials
140-
)
140+
if self.use_ssl:
141+
context = ssl.create_default_context()
142+
ssl_options = pika.SSLOptions(context, self.host)
143+
self.pika_parameters = pika.ConnectionParameters(
144+
host=self.host,
145+
port=self.port,
146+
virtual_host="/",
147+
credentials=self.pika_credentials,
148+
ssl_options=ssl_options,
149+
)
150+
else:
151+
self.pika_parameters = pika.ConnectionParameters(
152+
host=self.host,
153+
port=self.port,
154+
virtual_host="/",
155+
credentials=self.pika_credentials,
156+
)
141157
self.pika_connection = pika.BlockingConnection(self.pika_parameters)
142158
self.channel = self.pika_connection.channel()
143159
self.channel.basic_consume(
@@ -531,12 +547,24 @@ def send_stix2_bundle(self, bundle, **kwargs) -> list:
531547
pika_credentials = pika.PlainCredentials(
532548
self.config["connection"]["user"], self.config["connection"]["pass"]
533549
)
534-
pika_parameters = pika.ConnectionParameters(
535-
self.config["connection"]["host"],
536-
self.config["connection"]["port"],
537-
"/",
538-
pika_credentials,
539-
)
550+
if self.config["connection"]["use_ssl"]:
551+
context = ssl.create_default_context()
552+
ssl_options = pika.SSLOptions(context, self.config["connection"]["host"])
553+
pika_parameters = pika.ConnectionParameters(
554+
host=self.config["connection"]["host"],
555+
port=self.config["connection"]["port"],
556+
virtual_host="/",
557+
credentials=pika_credentials,
558+
ssl_options=ssl_options,
559+
)
560+
else:
561+
pika_parameters = pika.ConnectionParameters(
562+
host=self.config["connection"]["host"],
563+
port=self.config["connection"]["port"],
564+
virtual_host="/",
565+
credentials=pika_credentials,
566+
)
567+
540568
pika_connection = pika.BlockingConnection(pika_parameters)
541569
channel = pika_connection.channel()
542570
for sequence, bundle in enumerate(bundles, start=1):

0 commit comments

Comments
 (0)