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
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
akka {
cluster.enable = on
actor {
provider = cluster
}
remote.artery {
canonical {
hostname = "10.1.2.1"
port = 2551
}
}
# seed node list contains at least one active node
cluster.seed-nodes = [ "akka://[email protected]:2551", "akka://[email protected]:2551", "akka://[email protected]:2551" ]
}
Düğüm 2:
akka {
cluster.enable = on
actor {
provider = cluster
}
remote.artery {
canonical {
hostname = "10.1.2.2"
port = 2551
}
}
# seed node list contains at least one active node
cluster.seed-nodes = [ "akka://[email protected]:2551", "akka://[email protected]:2551", "akka://[email protected]:2551" ]
}
Düğüm3:
akka {
cluster.enable = on
actor {
provider = cluster
}
remote.artery {
canonical {
hostname = "10.1.2.3"
port = 2551
}
}
# seed node list contains at least one active node
cluster.seed-nodes = [ "akka://[email protected]:2551", "akka://[email protected]:2551", "akka://[email protected]: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
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
Sunucu sertifikalarınızın her şeyin düzgün çalışması için çeşitli KeyUsage ve ExtendedkeyUsage uzantıları içermesi gerekir:
- KeyUsage uzantıları
- nonRepudiation
- dataEncipherment
- digitalSignature
- keyEncipherment
- ExtendedkeyUsage uzantıları
- serverAuth
- clientAuth
akka {
cluster.enable = on
actor {
provider = cluster
}
remote.artery {
transport = tls-tcp
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://[email protected]:2551", "akka://[email protected]:2551", "akka://[email protected]:2551" ]
}
Aynı prensibi diğer düğümler için de uygulayın ve tüm hizmetleri yeniden başlatın.