Saltar al contenido

Conéctese a SAP HANA con conexión segura desde Python

Con el sslValidateCertificate establecido en True, el cliente de SAP HANA intenta validar el certificado del servidor mientras se conecta. Para hacerlo, el cliente debe tener acceso al certificado raíz de la autoridad de certificación que firmó el certificado del servidor.

Si aún no está establecido en Verdadero, cambie el sslValidateCertificate Verdadero parámetro.

Si ejecuta su código ahora, es probable que vea algo como el resultado a continuación. Tenga en cuenta que cuando se conecta a HANA como un servicio de Windows, el certificado raíz de la autoridad de certificación se instala de forma predeterminada y está disponible para el cliente SAP de HANA.

Traceback (most recent call last):
  File "secure_conn.py", line 8, in <module>
    ENCRYPT=True
hdbcli.dbapi.Error: (-10709, 'Connection failed (RTE:[300010]
  Cannot create SSL context:   SSL trust store cannot be found:
  /home/userX/.ssl/trust.pem (zeus.SAP HANA.prod.us-east-1.whitney.dbaas.ondemand.com:208xx))')

Si ve este error, especifique dónde obtener el certificado original de la autoridad certificadora que firmó el certificado del servidor de la base de datos. Para SAP HANA as a Service, es la autoridad de certificación DigiCert.

El proceso es diferente entre Windows y Mac / Linux.

Compruebe para ver si el DigiCert Global Root CA instalado en Windows.

Raíz global de DigiCert CA.

Si no, descarga DigiCertGlobalRootCA.crt y luego haga clic derecho para instalarlo.

bua_1

Si ve una advertencia de seguridad, haga clic en Abierto.

bua_2

Puede instalar el certificado para el usuario actual o la máquina local.

bua_3

Instale el certificado en Autoridades de certificación raíz de confianza.

bua_4

Complete la instalación haciendo clic en Finalizar.

bua_5

Después de instalar el certificado y habilitar la validación del certificado SSL, debería ver algo similar al resultado a continuación.

python pythonQuery.py
Connection to SAP HANA Service successful.
SID = H00
Database Name = H00
Version = 2.00.040.00.1554459575

Para especificar un proveedor de cifrado, se puede utilizar el siguiente parámetro. Tenga en cuenta que el valor predeterminado mscrypto en Windows. En la siguiente sección, esto se cambiará para usar la biblioteca de cifrado común de SAP.

sslCryptoProvider='mscrypto',

Descargar DigiCertGlobalRootCA.crt.pem.

Coloque el archivo donde el cliente SAP HANA busca el certificado predeterminado como se especifica en el mensaje de error, como

/Users/userX/.ssl/trust.pem

o

/home/userX/.ssl/trust.pem.

Tenga en cuenta que debe cambiar el nombre del archivo a trust.pem.
Crea la carpeta .ssl si aún no existe.

Si un .crt archivo, se puede convertir a .pem archivo con el siguiente comando.

openssl x509 -inform der -in DigiCertGlobalRootCA.crt -out trust.pem

Después de colocar el certificado en el lugar predeterminado, el resultado ahora debería ser el siguiente.

Connection to SAP HANA Service successful.
SID = H00
Database Name = H00
Version = 2.00.040.00.1554459575

Si desea utilizar una ruta personalizada para su certificado, se puede utilizar el siguiente parámetro.

sslTrustStore='<Path to certificate>'

Para especificar un proveedor de cifrado, se puede utilizar el siguiente parámetro. Tenga en cuenta que el valor predeterminado openssl en Mac y Linux. En la siguiente sección, esto se cambiará para usar la biblioteca de cifrado común de SAP.

sslCryptoProvider='openssl'

Hecho

Inicie sesión para responder la pregunta