浏览代码

HUE-9246 [core] Enable SAML certificate creation with passphrase support. (#1099)

(cherry picked from commit 9478de0d62f70f048c8adc9f2aac3f2b44f2573b)
Prakash Ranade 5 年之前
父节点
当前提交
7b8e2b408b
共有 2 个文件被更改,包括 7 次插入4 次删除
  1. 4 3
      desktop/core/ext-py/pysaml2-4.9.0/src/saml2/sigver.py
  2. 3 1
      tools/container/hue/hue.sh

+ 4 - 3
desktop/core/ext-py/pysaml2-4.9.0/src/saml2/sigver.py

@@ -459,9 +459,10 @@ def pem_format(key):
     ]).encode('ascii')
 
 
-def import_rsa_key_from_file(filename):
+def import_rsa_key_from_file(filename, passphrase=None):
     data = read_file(filename, 'rb')
-    key = saml2.cryptography.asymmetric.load_pem_private_key(data, None)
+    passphrase = bytes(passphrase) if passphrase else None
+    key = saml2.cryptography.asymmetric.load_pem_private_key(data, passphrase)
     return key
 
 
@@ -1065,7 +1066,7 @@ def security_context(conf):
         _file_name = conf.getattr('key_file', '')
         if _file_name:
             try:
-                rsa_key = import_rsa_key_from_file(_file_name)
+                rsa_key = import_rsa_key_from_file(_file_name, passphrase=conf.key_file_passphrase)
             except Exception as err:
                 logger.error('Cannot import key from {file}: {err_msg}'.format(
                     file=_file_name, err_msg=err))

+ 3 - 1
tools/container/hue/hue.sh

@@ -56,7 +56,9 @@ function set_samlcert() {
     openssl req -new -key server.key -out server.csr -subj "/C=US/ST=California/L=Palo Alto/O=Cloudera/OU=Hue/CN=$EXTERNAL_HOST"
     openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
   else
-    echo "echo \$PASSPHRASE" > $HUE_CONF_DIR/samlcert/pass.key
+    echo "#!/bin/bash" > $HUE_CONF_DIR/samlcert/pass.key
+    echo "echo \$PASSPHRASE" >> $HUE_CONF_DIR/samlcert/pass.key
+    chmod a+x $HUE_CONF_DIR/samlcert/pass.key
     openssl genrsa -des3 -passout pass:$PASSPHRASE -out server.key 2048
     openssl req -new -key server.key -out server.csr -passin pass:$PASSPHRASE -subj "/C=US/ST=California/L=Palo Alto/O=Cloudera/OU=Hue/CN=$EXTERNAL_HOST"
     openssl x509 -req -days 365 -in server.csr -passin pass:$PASSPHRASE -signkey server.key -out server.crt