es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

SSL + .jks + Python = SSL + .jks + Python

Tengo un certificado en formato .jks. Utilizo Python y me gustaría escribir un consumidor que utilice este certificado. No sé cómo hacerlo con pyjks. Este certificado se usaba anteriormente en Java. ¿Puede ayudarme y explicar cómo hacerlo?

¿Cómo puedo obtener ssl_cafile, ssl_certfile y ssl_keyfile?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para usar un certificado .jks en Python con pyjks, se puede cargar el archivo .jks utilizando el método jks.KeyStore.load() como se muestra en el fragmento de código proporcionado. Una vez cargado el almacén de claves, se puede obtener el certificado, la clave y la cadena CA usando el siguiente código:

    ks = jks.KeyStore.load(path, pass)
    ssl_cafile = ks.get_ca_chain_alias()  # Obtiene el nombre de alias para la entrada de cadena CA
    ssl_certfile = ks.get_certificate_alias()  # Obtiene el nombre de alias para la entrada de certificado
    ssl_keyfile = ks.get_private_key_alias()  # Obtiene el nombre de alias para la entrada de clave privada
    

    Después de obtener los alias para las entradas de interés, se pueden usar para recuperar las entradas respectivas del almacén de claves y usarlas en la configuración de KafkaConsumer de la siguiente manera:

    ks = jks.KeyStore.load(path, pass)
    ssl_cafile = ks.get_ca_chain_alias()  # Obtiene el nombre de alias para la entrada de cadena CA
    ssl_certfile = ks.get_certificate_alias()  # Obtiene el nombre de alias para la entrada de certificado
    ssl_keyfile = ks.get_private_key_alias()  # Obtiene el nombre de alias para la entrada de clave privada
    consumer = KafkaConsumer(topic, bootstrap_servers=[client], security_protocol='SSL', ssl_cafile=ks.get_certificate(ssl_cafile).to_pem(), ssl_certfile=ks.get_certificate(ssl_certfile).to_pem(), ssl_keyfile=ks.get_private_key(ssl_keyfile).to_pem())
    

    En el código anterior, se utilizan los métodos ks.get_certificate(alias).to_pem() y ks.get_private_key(alias).to_pem() para obtener las representaciones codificadas en PEM del certificado y las entradas de clave privada, respectivamente. Estos se pasan a la configuración de KafkaConsumer a través de los parámetros ssl_certfile y ssl_keyfile, respectivamente. El parámetro ssl_cafile toma la cadena CA codificada en PEM obtenida con ks.get_certificate(alias).to_pem().

    Asegúrese de que la ruta y la contraseña suministradas al método jks.KeyStore.load() sean correctas y que los alias para las entradas de interés estén presentes en el archivo de almacén de claves.

Comments are closed.