diff --git a/python/fedml/core/mlops/mlops_configs.py b/python/fedml/core/mlops/mlops_configs.py index 1ed2e0476d..338f59e697 100644 --- a/python/fedml/core/mlops/mlops_configs.py +++ b/python/fedml/core/mlops/mlops_configs.py @@ -8,6 +8,7 @@ import fedml from fedml.core.mlops.mlops_utils import MLOpsUtils +from urllib.parse import urlparse class Configs(Enum): @@ -49,9 +50,15 @@ def get_request_params(): cert_path = None if str(url).startswith("https://"): cur_source_dir = os.path.dirname(__file__) - cert_path = os.path.join( - cur_source_dir, "ssl", "open-" + fedml.get_env_version() + ".fedml.ai_bundle.crt" - ) + version = fedml.get_env_version() + if version == "local": + cert_path = os.path.join( + cur_source_dir, "ssl", f"{urlparse(url).hostname}.{version}.crt" + ) + else: + cert_path = os.path.join( + cur_source_dir, "ssl", "open-" + fedml.get_env_version() + ".fedml.ai_bundle.crt" + ) return url, cert_path @@ -88,17 +95,30 @@ def get_cert_path_with_version(): cert_path = None if str(url).startswith("https://"): cur_source_dir = os.path.dirname(__file__) - cert_path = os.path.join( - cur_source_dir, "ssl", "open-" + version + ".fedml.ai_bundle.crt" - ) + if version == "local": + cert_path = os.path.join( + cur_source_dir, "ssl", f"{urlparse(url).hostname}.{version}.crt" + ) + else: + cert_path = os.path.join( + cur_source_dir, "ssl", "open-" + version + ".fedml.ai_bundle.crt" + ) + return cert_path @staticmethod def get_root_ca_path(): cur_source_dir = os.path.dirname(__file__) - cert_path = os.path.join( - cur_source_dir, "ssl", "open-root-ca.crt" - ) + version = fedml.get_env_version() + if version == "local": + url = fedml._get_backend_service() + cert_path = os.path.join( + cur_source_dir, "ssl", f"{urlparse(url).hostname}.{version}.rootca.crt" + ) + else: + cert_path = os.path.join( + cur_source_dir, "ssl", "open-root-ca.crt" + ) return cert_path @staticmethod diff --git a/python/fedml/core/mlops/ssl/open.chainopera.ai.local.crt b/python/fedml/core/mlops/ssl/open.chainopera.ai.local.crt new file mode 100644 index 0000000000..400c30aaa0 --- /dev/null +++ b/python/fedml/core/mlops/ssl/open.chainopera.ai.local.crt @@ -0,0 +1,63 @@ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw +ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y +ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg +VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM +UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs +Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm +qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c +Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf +IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5 +8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB +Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8 +SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY +1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB +JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE +FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E +CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE +GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo +dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy +bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k +b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY +eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO +2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4 +3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP +v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s +Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g== +-----END CERTIFICATE----- \ No newline at end of file diff --git a/python/fedml/core/mlops/ssl/open.chainopera.ai.local.rootca.crt b/python/fedml/core/mlops/ssl/open.chainopera.ai.local.rootca.crt new file mode 100644 index 0000000000..e87d0c5783 --- /dev/null +++ b/python/fedml/core/mlops/ssl/open.chainopera.ai.local.rootca.crt @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw +ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G +A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y +ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg +VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM +UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs +Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm +qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c +Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf +IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5 +8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB +Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8 +SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY +1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB +JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE +FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E +CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE +GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo +dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy +bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k +b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY +eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO +2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4 +3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP +v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s +Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g== +-----END CERTIFICATE-----