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 09-07-2018 07:52 PM
I am trying to set up SSL between Ranger Admin and Ranger HDFS plugin (HDP 2.6.5)
I am able to successfully have Ranger Admin UI served via HTTPS (browser says certificate is valid), but my HDFS plugin is not able to sync the policies with Ranger.
My setup:
4-node cluster
As far as I understand, I need to set up keystores and truststores on Node 1 and configure Ranger & HDFS to use those keystores and truststores.
Steps performed:
cp cert.pem cert.p7b
openssl pkcs7 -print_certs -in cert.p7b -out cert.cer
openssl pkcs12 -export -in cert.cer -inkey certkey.key -out rangeradmin.p12 -name rangeradmin
keytool -importkeystore -deststorepass pass2word -destkeypass pass2word -srckeystore rangeradmin.p12 -srcstoretype PKCS12 -destkeystore ranger-admin-keystore.jks -deststoretype JKS -alias rangeradmin
keytool -importkeystore -deststorepass pass2word -destkeypass pass2word -srckeystore rangeradmin.p12 -srcstoretype PKCS12 -destkeystore hdfs-plugin-keystore.jks -deststoretype JKS -alias hdfsplugin
keytool -export -keystore hdfs-plugin-keystore.jks -alias hdfsplugin -file hdfsplugin.cer -storepass pass2word
keytool -import -file hdfsplugin.cer -alias hdfsplugin -keystore /etc/ranger/admin/conf/ranger-admin-truststore.jks -storepass pass2word
keytool -export -keystore ranger-admin-keystore.jks -alias rangeradmin -file rangeradmin.cer -storepass pass2word
keytool -import -file rangeradmin.cer -alias rangeradmin -keystore /etc/hadoop/conf/hdfs-plugin-truststore.jks -storepass pass2word
At this point I have my Ranger keystore and truststore files in /etc/ranger/admin/conf and HDFS has its in /etc/hadoop/conf/
xasecure.policymgr.clientssl.keystore = /etc/hadoop/conf/hdfs-plugin-keystore.jks xasecure.policymgr.clientssl.keystore.password = pass2word xasecure.policymgr.clientssl.truststore = hdfs-plugin-truststore.jks xasecure.policymgr.clientssl.truststore.password = pass2word
common.name.for.certificate = hdfsplugin
The problem is that the HDFS Ranger policies do not get synced. Ranger admin'sxa_portal.log says "Unauthorized access. Unable to get client certificate."
What am I missing here?
Created 09-08-2018 12:05 AM
Hi @Maxim Neaga.
Just to make sure, if you run the following command for every keystore/trustore, are you able to see the certificate?
keytool -v -list -keystore <pathtokeystore>/<keystore/trustore.jks>
It should show up something like this:
[root@vmurakami-1 ~]# keytool -v -list -keystore windows.jks Enter keystore password: Keystore type: JKS Keystore provider: SUN Your keystore contains 2 entries Alias name: nifi-cert Creation date: Sep 1, 2018 Entry type: trustedCertEntry Owner: CN=vmurakami-3, OU=NIFI Issuer: CN=vmurakami-3, OU=NIFI Serial number: 1649584f09b00000000 Valid from: Fri Jul 13 21:21:14 UTC 2018 until: Mon Jul 12 21:21:14 UTC 2021 Certificate fingerprints: MD5: 02:BE:7D:37:22:5B:A8:37:F2:F0:02:E0:26:96:E7:54 SHA1: 1F:D0:EC:B5:1A:6E:E7:E5:B4:65:71:1B:8A:B3:99:C2:2A:50:28:0D SHA256: 14:1C:40:B9:2E:6C:C4:5F:56:C8:9D:76:31:21:B5:CB:E2:FA:B1:A2:BE:9B:CA:7F:0D:B4:72:1B:32:2A:95:69 Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 78 2D ED D1 1D 7F F6 22 A3 60 39 EF CE AC 09 6E x-.....".`9....n 0010: CD 51 B9 D3 .Q.. ] ] #2: ObjectId: 2.5.29.19 Criticality=false BasicConstraints:[ CA:true PathLen:2147483647 ] #3: ObjectId: 2.5.29.37 Criticality=false ExtendedKeyUsages [ clientAuth serverAuth ] #4: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ DigitalSignature Non_repudiation Key_Encipherment Data_Encipherment Key_Agreement Key_CertSign Crl_Sign ] #5: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 78 2D ED D1 1D 7F F6 22 A3 60 39 EF CE AC 09 6E x-.....".`9....n 0010: CD 51 B9 D3 .Q.. ] ] ******************************************* ******************************************* Alias name: windows Creation date: Sep 1, 2018 Entry type: PrivateKeyEntry Certificate chain length: 2 Certificate[1]: Owner: CN=MSEDGEWIN10, OU=NIFI Issuer: CN=MSEDGEWIN10, OU=NIFI Serial number: 27ba96c9 Valid from: Sat Sep 01 07:21:44 UTC 2018 until: Tue Aug 27 07:21:44 UTC 2019 Certificate fingerprints: MD5: B7:FE:EB:0C:3E:7D:EE:E9:58:54:EC:2B:F4:02:9C:0D SHA1: 3A:9A:DD:05:FF:E8:41:99:C8:8B:D4:84:4C:4A:5E:56:6C:46:15:B0 SHA256: 22:CD:A6:CE:9E:F0:B8:A3:A8:6E:25:2E:4D:A2:AB:70:4F:98:36:AC:8C:C0:A0:B6:15:22:E8:27:80:CC:F3:A6 Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 3B FE 73 64 EC 9C 91 B6 AC 3D EC 44 9D AF DD 66 ;.sd.....=.D...f 0010: B8 DE 4A F8 ..J. ] ] Certificate[2]: Owner: CN=vmurakami-3, OU=NIFI Issuer: CN=vmurakami-3, OU=NIFI Serial number: 1649584f09b00000000 Valid from: Fri Jul 13 21:21:14 UTC 2018 until: Mon Jul 12 21:21:14 UTC 2021 Certificate fingerprints: MD5: 02:BE:7D:37:22:5B:A8:37:F2:F0:02:E0:26:96:E7:54 SHA1: 1F:D0:EC:B5:1A:6E:E7:E5:B4:65:71:1B:8A:B3:99:C2:2A:50:28:0D SHA256: 14:1C:40:B9:2E:6C:C4:5F:56:C8:9D:76:31:21:B5:CB:E2:FA:B1:A2:BE:9B:CA:7F:0D:B4:72:1B:32:2A:95:69 Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 78 2D ED D1 1D 7F F6 22 A3 60 39 EF CE AC 09 6E x-.....".`9....n 0010: CD 51 B9 D3 .Q.. ] ] #2: ObjectId: 2.5.29.19 Criticality=false BasicConstraints:[ CA:true PathLen:2147483647 ] #3: ObjectId: 2.5.29.37 Criticality=false ExtendedKeyUsages [ clientAuth serverAuth ] #4: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ DigitalSignature Non_repudiation Key_Encipherment Data_Encipherment Key_Agreement Key_CertSign Crl_Sign ] #5: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 78 2D ED D1 1D 7F F6 22 A3 60 39 EF CE AC 09 6E x-.....".`9....n 0010: CD 51 B9 D3 .Q.. ] ] ******************************************* ******************************************* Warning: The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore windows.jks -destkeystore windows.jks -deststoretype pkcs12".
Also, make sure of 2 things:
- Give the read permission to the ranger hdfs plugin keystore/trustore
chmod o+r keystore.jks truststore.jks
- Put the same owner (CN=<some_name>) in the
Ranger HDFS plugin > Owner of the certificate in Ambari UI
commonNameForCertificate in the Ranger Plugin for HDFS in Ranger UI
And lastly, to make sure, go to the ranger-admin node into the default java keystore "cacerts" and add the client certificate.
find / -name "cacerts" -type f
keytool -import -file <your cert file> -alias <your alias> -keystore <the_path_for_the_jdk_listed_above>/cacerts -storepass changeit #default passwor
Hope this helps!
Created 09-08-2018 12:05 AM
Hi @Maxim Neaga.
Just to make sure, if you run the following command for every keystore/trustore, are you able to see the certificate?
keytool -v -list -keystore <pathtokeystore>/<keystore/trustore.jks>
It should show up something like this:
[root@vmurakami-1 ~]# keytool -v -list -keystore windows.jks Enter keystore password: Keystore type: JKS Keystore provider: SUN Your keystore contains 2 entries Alias name: nifi-cert Creation date: Sep 1, 2018 Entry type: trustedCertEntry Owner: CN=vmurakami-3, OU=NIFI Issuer: CN=vmurakami-3, OU=NIFI Serial number: 1649584f09b00000000 Valid from: Fri Jul 13 21:21:14 UTC 2018 until: Mon Jul 12 21:21:14 UTC 2021 Certificate fingerprints: MD5: 02:BE:7D:37:22:5B:A8:37:F2:F0:02:E0:26:96:E7:54 SHA1: 1F:D0:EC:B5:1A:6E:E7:E5:B4:65:71:1B:8A:B3:99:C2:2A:50:28:0D SHA256: 14:1C:40:B9:2E:6C:C4:5F:56:C8:9D:76:31:21:B5:CB:E2:FA:B1:A2:BE:9B:CA:7F:0D:B4:72:1B:32:2A:95:69 Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 78 2D ED D1 1D 7F F6 22 A3 60 39 EF CE AC 09 6E x-.....".`9....n 0010: CD 51 B9 D3 .Q.. ] ] #2: ObjectId: 2.5.29.19 Criticality=false BasicConstraints:[ CA:true PathLen:2147483647 ] #3: ObjectId: 2.5.29.37 Criticality=false ExtendedKeyUsages [ clientAuth serverAuth ] #4: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ DigitalSignature Non_repudiation Key_Encipherment Data_Encipherment Key_Agreement Key_CertSign Crl_Sign ] #5: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 78 2D ED D1 1D 7F F6 22 A3 60 39 EF CE AC 09 6E x-.....".`9....n 0010: CD 51 B9 D3 .Q.. ] ] ******************************************* ******************************************* Alias name: windows Creation date: Sep 1, 2018 Entry type: PrivateKeyEntry Certificate chain length: 2 Certificate[1]: Owner: CN=MSEDGEWIN10, OU=NIFI Issuer: CN=MSEDGEWIN10, OU=NIFI Serial number: 27ba96c9 Valid from: Sat Sep 01 07:21:44 UTC 2018 until: Tue Aug 27 07:21:44 UTC 2019 Certificate fingerprints: MD5: B7:FE:EB:0C:3E:7D:EE:E9:58:54:EC:2B:F4:02:9C:0D SHA1: 3A:9A:DD:05:FF:E8:41:99:C8:8B:D4:84:4C:4A:5E:56:6C:46:15:B0 SHA256: 22:CD:A6:CE:9E:F0:B8:A3:A8:6E:25:2E:4D:A2:AB:70:4F:98:36:AC:8C:C0:A0:B6:15:22:E8:27:80:CC:F3:A6 Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 3B FE 73 64 EC 9C 91 B6 AC 3D EC 44 9D AF DD 66 ;.sd.....=.D...f 0010: B8 DE 4A F8 ..J. ] ] Certificate[2]: Owner: CN=vmurakami-3, OU=NIFI Issuer: CN=vmurakami-3, OU=NIFI Serial number: 1649584f09b00000000 Valid from: Fri Jul 13 21:21:14 UTC 2018 until: Mon Jul 12 21:21:14 UTC 2021 Certificate fingerprints: MD5: 02:BE:7D:37:22:5B:A8:37:F2:F0:02:E0:26:96:E7:54 SHA1: 1F:D0:EC:B5:1A:6E:E7:E5:B4:65:71:1B:8A:B3:99:C2:2A:50:28:0D SHA256: 14:1C:40:B9:2E:6C:C4:5F:56:C8:9D:76:31:21:B5:CB:E2:FA:B1:A2:BE:9B:CA:7F:0D:B4:72:1B:32:2A:95:69 Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 78 2D ED D1 1D 7F F6 22 A3 60 39 EF CE AC 09 6E x-.....".`9....n 0010: CD 51 B9 D3 .Q.. ] ] #2: ObjectId: 2.5.29.19 Criticality=false BasicConstraints:[ CA:true PathLen:2147483647 ] #3: ObjectId: 2.5.29.37 Criticality=false ExtendedKeyUsages [ clientAuth serverAuth ] #4: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ DigitalSignature Non_repudiation Key_Encipherment Data_Encipherment Key_Agreement Key_CertSign Crl_Sign ] #5: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 78 2D ED D1 1D 7F F6 22 A3 60 39 EF CE AC 09 6E x-.....".`9....n 0010: CD 51 B9 D3 .Q.. ] ] ******************************************* ******************************************* Warning: The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore windows.jks -destkeystore windows.jks -deststoretype pkcs12".
Also, make sure of 2 things:
- Give the read permission to the ranger hdfs plugin keystore/trustore
chmod o+r keystore.jks truststore.jks
- Put the same owner (CN=<some_name>) in the
Ranger HDFS plugin > Owner of the certificate in Ambari UI
commonNameForCertificate in the Ranger Plugin for HDFS in Ranger UI
And lastly, to make sure, go to the ranger-admin node into the default java keystore "cacerts" and add the client certificate.
find / -name "cacerts" -type f
keytool -import -file <your cert file> -alias <your alias> -keystore <the_path_for_the_jdk_listed_above>/cacerts -storepass changeit #default passwor
Hope this helps!
Created 09-10-2018 01:16 AM
Thank you for your answer, @Vinicius Higa Murakami, this was very helpful!
It looks like I was missing the last part, I had to add root and intermediate certificates to the default java keystore "cacerts". I wonder why we need to add the certs to the default java keystore, and not the rangeradmin & client keystores?
Created 09-11-2018 04:17 AM
Hello @Maxim Neaga!
I'm glad that I could help you 🙂
Yeah, make totally sense your question. I'd say because you've 3 truststore's:
- 1 x truststore's for the nifi nodes
- 1 x For the Ranger x Nifi plugin
- 1 x For Ranger Admin (which is the java default cacerts).
Hope this helps!