Certificados de encriptación AKKA privados simples

1

Hay varias preguntas sobre stackoverflow con respecto a Akka, SSL y la gestión de certificados para permitir la comunicación segura (encriptada) de igual a igual entre los actores Akka.

La Akka documentación sobre la comunicación remota  señala a los lectores a este recurso como un ejemplo de cómo generar X. 509 Certificados.

Dado que los actores se ejecutan en servidores internos, la Generación de una CA de servidor para example.com (o realmente cualquier nombre de DNS) no parece estar relacionada. La mayoría de los servidores (por ejemplo, las instancias de EC2 que se ejecutan en los servicios web de Amazon) se ejecutarán en una VPC y los controles remotos Akka iniciales serán direcciones IP privadas como

remote = "akka.tcp://[email protected]:2553"

A mi entender, es que debería ser posible crear un certificado autofirmado y generar un almacén de confianza que todos los compañeros compartan.

A medida que se conectan más nodos Akka, deberían (supongo) poder usar el mismo certificado autofirmado y el almacén de confianza que utilizan todos los demás pares. También asumo que no es necesario confiar a todos los pares una lista cada vez mayor de certificados, incluso si no tiene una CA, ya que el almacén de confianza validará ese certificado y evitará ataques de intermediarios.

La solución ideal, y esperanza, es que es posible generar un único certificado autofirmado, sin los pasos de CA, un solo archivo de almacén de confianza, y compartirlo entre cualquier combinación de remotos Akka / (tanto el cliente llama al remoto y el control remoto, es decir, todos los pares)

Debe haber un proceso simple de seguir para generar certificados para el cifrado interno simple y la autenticación del cliente (solo confíe en todos los pares)

Pregunta: ¿todos estos pueden ser el mismo archivo en todos los pares, ya que son internos y privados (sin DNS)?

key-store = "/example/path/to/mykeystore.jks"
trust-store = "/example/path/to/mytruststore.jks"

Pregunta: ¿Las instrucciones de X.509 están vinculadas anteriormente? ¿Hay un enfoque simple de autofirmado / autofirmado sin los pasos de CA? Específicamente solo para direcciones IP internas (sin DNS) y sin una red cada vez mayor de direcciones IP en un certificado, ya que los servidores pueden escalarse y subirse automáticamente.

Dado que todo es interno & privado, podemos hacer esto:

#!/bin/bash

# create self signed certificate for use in Java SSL

export PW='pwgen -Bs 10 1'
echo $PW > example-self-cert-password

# generate a key valid for 9999 days, or 27 years
# self signed certificate for encryption
keytool -genkeypair -alias example-self -keyalg RSA \
-keypass:env PW -storepass:env PW \
-keystore example-self-keystore.jks -validity 9999 \
-keysize 4096 \
-dname "CN=example-selfCA, OU=Cloud Services, O=example company, L=San Francisco, ST=m=California, C=US"

# Extract the certificate
keytool -export -keystore example-self-keystore.jks -alias example-self -file example-self.cer \
-keypass:env PW \
-storepass:env PW

# Importing into the truststore
keytool -import -alias example-self -file example-self.cer -keystore example-self-truststore.jks \
-storepass:env PW << EOF
yes
EOF

# optional
# list out to confirm
keytool -list -v \
  -keystore example-self-truststore.jks \
  -storepass:env PW

# optional
# if you want an openssl PEM file, convert it
openssl x509 -inform der -in example-self.cer -out example-self.pem
    
pregunta Jeff Steinmetz 17.12.2016 - 21:01
fuente

0 respuestas

Lea otras preguntas en las etiquetas