Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 11-21-2016 12:49 PM
HI,
We have a kerberos enabled FDT cluster, I want to access the nifi api through https of python. But I cannot got it.
I don't know how to put the parameter, self.key, and self.cert: how to get the private key, and the certificate chain.
httplib.HTTPSConnection(host,key_file=self.key,cert_file=self.cert,timeout=timeout)
there is my https config
Could you give me any point. Thanks.
Paul
Created 11-21-2016 03:14 PM
According to Python documentation, using key_file and cert_file is deprecated, they recommend you pass in a context (one that has been configured by calling load_cert_chain). You'll need a certfile and a keyfile there too, which you can get using various openssl commands (assuming you have openssl installed). For example, to export a client secret key from a PKCS12 keystore to a PEM file:
openssl pkcs12 -in CN=<something_you_typed>_OU=Apache NiFi.p12 -nodes -nocerts -out client.key
Or to export a server private key from a JKS keystore to a PEM file:
keytool -importkeystore -srckeystore <keystore.jks> -destkeystore keystore.p12 -deststoretype PKCS12 openssl pkcs12 -in keystore.p12 -nodes -nocerts -out nifi.key
Or to export a CA cert from a JKS keystore to a PEM file:
keytool -export -alias <your_alias> -file ca.der -keystore <truststore.jks> openssl x509 -inform der -in ca.der -out ca.pem
Created 11-21-2016 03:14 PM
According to Python documentation, using key_file and cert_file is deprecated, they recommend you pass in a context (one that has been configured by calling load_cert_chain). You'll need a certfile and a keyfile there too, which you can get using various openssl commands (assuming you have openssl installed). For example, to export a client secret key from a PKCS12 keystore to a PEM file:
openssl pkcs12 -in CN=<something_you_typed>_OU=Apache NiFi.p12 -nodes -nocerts -out client.key
Or to export a server private key from a JKS keystore to a PEM file:
keytool -importkeystore -srckeystore <keystore.jks> -destkeystore keystore.p12 -deststoretype PKCS12 openssl pkcs12 -in keystore.p12 -nodes -nocerts -out nifi.key
Or to export a CA cert from a JKS keystore to a PEM file:
keytool -export -alias <your_alias> -file ca.der -keystore <truststore.jks> openssl x509 -inform der -in ca.der -out ca.pem
Created 11-22-2016 07:00 AM
Thanks for your response.
For me I cannot got the first step of client secret key, there is not CN<something_you_typed>_OU=ApacheNiFi.p12
file , I just do the second step :
keytool -importkeystore -srckeystore <keystore.jks> -destkeystore keystore.p12 -deststoretype PKCS12 openssl pkcs12 -in keystore.p12 -out nifi-01.pem -nodes
So I put the nifi-01.pem to :
conn=httplib.HTTPSConnection('nifi-test01.beta1.fn', 9091, key_file=None, cert_file="nifi-01.pem")
and it works.
BTW , I really don't need to put username and password and I can access the rest get api.
Of course, I did not to use post or delete api, is it the correct behavior?
Thanks again.