# Akka Yapılandırması

Akka, Java ve Scala için yüksek düzeyde eşzamanlı, dağıtılmış ve esnek mesaj odaklı uygulamalar oluşturmaya yönelik bir araç setidir

\-- [https://akka.io/](https://akka.io/)

Akka, TheHive'in birçok düğümünü bir araya getirerek ve sorunsuz bir kullanıcı deneyimi sunarak çalışmasını sağlamak için kullanılır.

**Temel yapılandırma**

İyi bir küme kurulumu, TheHive uygulamalarının en az 3 düğümünü gerektirir. Her düğüm için Akka şu şekilde yapılandırılmalıdır:

```
akka {
  cluster.enable = on
  actor {
    provider = cluster
  }
  remote.artery {
    canonical {
      hostname = "<HOSTNAME OR IP_ADDRESS>"
      port = 2551
    }
  }
# seed node list contains at least one active node
  cluster.seed-nodes = [ "akka://application@HOSTNAME1:2551", "akka://application@HOSTNAME2:2551", "akka://application@HOSTNAME3:2551" ]
}
```

ile:

*remote.artery.hostname* düğümün ana bilgisayar adını veya IP adresini içerir,  
akka düğümlerinin listesini içeren ve tüm düğümlerde aynı olan *cluster.seed-nodes*

<div class="result-frame svelte-1a37brm" id="bkmrk-bir-k%C3%BCmenin-3-d%C3%BC%C4%9F%C3%BCml">Bir Kümenin 3 Düğümlü Yapılandırması:</div><div class="result-frame svelte-1a37brm" id="bkmrk-"></div><div class="result-frame svelte-1a37brm" id="bkmrk--1"></div><div class="result-frame svelte-1a37brm" id="bkmrk-d%C3%BC%C4%9F%C3%BCm-1%3A">Düğüm 1:</div><div class="result-frame svelte-1a37brm" id="bkmrk--2">  
</div>```
akka {
    cluster.enable = on
    actor {
      provider = cluster
    }
    remote.artery {
      canonical {
          <mark class="critic">hostname = "10.1.2.1"</mark>
          port = 2551
      }
    }
    # seed node list contains at least one active node
    cluster.seed-nodes = [ "akka://application@10.1.2.1:2551", "akka://application@10.1.2.2:2551", "akka://application@10.1.2.3:2551" ]
}
```

Düğüm 2:

```
akka {
    cluster.enable = on
    actor {
    provider = cluster
    }
    remote.artery {
    canonical {
        <mark class="critic">hostname = "10.1.2.2"</mark>
        port = 2551
    }
    }
    # seed node list contains at least one active node
    cluster.seed-nodes = [ "akka://application@10.1.2.1:2551", "akka://application@10.1.2.2:2551", "akka://application@10.1.2.3:2551" ]
}
```

Düğüm3:

```
akka {
    cluster.enable = on
    actor {
    provider = cluster
    }
    remote.artery {
    canonical {
        <mark class="critic">hostname = "10.1.2.3"</mark>
        port = 2551
    }
    }
    # seed node list contains at least one active node
    cluster.seed-nodes = [ "akka://application@10.1.2.1:2551", "akka://application@10.1.2.2:2551", "akka://application@10.1.2.3:2551" ]
}
```

**SSL/TLS desteği**

Akka, düğümler arasındaki iletişimi şifrelemek için SSL/TLS'yi destekler. SSL desteği ile tipik bir yapılandırma :

```
akka {
  cluster.enable = on
  actor {
    provider = cluster
  }
  remote.artery {
    transport = tls-tcp
    canonical {
      hostname = "<HOSTNAME OR IP_ADDRESS>"
      port = 2551
    }

    ssl.config-ssl-engine {
      key-store = "<PATH TO KEYSTORE>"
      trust-store = "<PATH TO TRUSTSTORE>"

      key-store-password = "chamgeme"
      key-password = "chamgeme"
      trust-store-password = "chamgeme"

      protocol = "TLSv1.2"
    }
  }
# seed node list contains at least one active node
  cluster.seed-nodes = [ "akka://application@HOSTNAME1:2551", "akka://application@HOSTNAME2:2551", "akka://application@HOSTNAME3:2551" ]
}
```

Not: *akka.remote.artery.transport*'un değiştiğini ve *akka.ssl.config-ssl-engine'*in yapılandırılması gerektiğini unutmayın.

Referans: [https://doc.akka.io/docs/akka/current/remoting-artery.html#remote-security](https://doc.akka.io/docs/akka/current/remoting-artery.html#remote-security)

<div class="result-frame svelte-1a37brm" id="bkmrk-sertifikalar-hakk%C4%B1nd">**Sertifikalar Hakkında**</div>Sertifikalar Hakkında

Kendi dahili PKI'nızı veya sertifikalarınızı oluşturmak için keytool komutlarını kullanabilirsiniz.

Referans: [https://lightbend.github.io/ssl-config/CertificateGeneration.html#using-keytool](https://lightbend.github.io/ssl-config/CertificateGeneration.html#using-keytool)

Sunucu sertifikalarınızın her şeyin düzgün çalışması için çeşitli KeyUsage ve ExtendedkeyUsage uzantıları içermesi gerekir:

<div class="result-frame svelte-1a37brm" id="bkmrk-keyusage-uzant%C4%B1lar%C4%B1-">- KeyUsage uzantıları 
    - nonRepudiation
    - dataEncipherment
    - digitalSignature
    - keyEncipherment
- ExtendedkeyUsage uzantıları 
    - serverAuth
    - clientAuth

</div><div class="result-frame svelte-1a37brm" id="bkmrk-node-1-i%C3%A7in-ssl-ile-"><div class="result-frame svelte-1a37brm">Node 1 için SSL ile Akka yapılandırması:</div><div class="result-frame svelte-1a37brm"></div></div>```
akka {
  cluster.enable = on
  actor {
    provider = cluster
  }
  remote.artery {
    <mark class="critic">transport = tls-tcp</mark>
    canonical {
      hostname = "10.1.2.1"
      port = 2551
    }

    ssl.config-ssl-engine {
      key-store = "/etc/thehive/application.conf.d/certs/10.1.2.1.jks"
      trust-store = "/etc/thehive/application.conf.d/certs/internal_ca.jks"

      key-store-password = "chamgeme"
      key-password = "chamgeme"
      trust-store-password = "chamgeme"

      protocol = "TLSv1.2"
    }
  }
# seed node list contains at least one active node
  cluster.seed-nodes = [ "akka://application@10.1.2.1:2551", "akka://application@10.1.2.2:2551", "akka://application@10.1.2.3:2551" ]
}
```

Aynı prensibi diğer düğümler için de uygulayın ve tüm hizmetleri yeniden başlatın.