2

我正在使用带有 LocalExecutor 的 Airflow 1.7.0,文档建议要启用 SSL,我们需要传递证书和密钥路径并将端口更改为 443,如下所示

[webserver]
web_server_ssl_cert = <path to cert>
web_server_ssl_key = <path to key>

# Optionally, set the server to listen on the standard SSL port.
web_server_port = 443
base_url = http://<hostname or IP>:443

我创建了使用 OpenSSL 生成的证书和密钥。创建证书/密钥时提供的详细信息也是正确的。但是,Airflow UI 仍然是 http 而不是 https。

任何指针都会有所帮助!

谢谢!

4

3 回答 3

3

在这个问题中解决了如何在 Airflow Webserver 上启用 SSL?并回答https://stackoverflow.com/a/56760375/512111

简而言之:生成一个密钥,crt对

openssl req \
       -newkey rsa:2048 -nodes -keyout domain.key \
       -x509 -days 365 -out airflow.crt

并设置airflow.cfg

web_server_ssl_cert = /path/to/airflow.crt
web_server_ssl_key = /path/to/airflow.key

保持网络服务器端口不变。重新启动气流网络服务器,转到https://hostname:portet voilà。

于 2019-09-13T10:51:25.607 回答
1

Airflow 1.7.0 不支持 SSL。我刚刚检查了气流 1.7.0 的网络服务器代码。代码如下。这个函数只是使用主机和端口在 HTTP 上启动 flask/gunicorn 应用程序。如果您提供证书并将端口提及为 443,它将简单地启动应用程序http://<host>:443。它不接受 SSL 密钥和证书。Airflow 1.7.0 的 webserver 功能如下所示。

最新版本的 Apache Airflow 提供 SSL 功能。请使用最新版本的 SSL 支持。

def webserver(args):
    print(settings.HEADER)
    from airflow.www.app import cached_app
    app = cached_app(configuration)
    workers = args.workers or configuration.get('webserver', 'workers')
    if args.debug:
        print(
            "Starting the web server on port {0} and host {1}.".format(
                args.port, args.hostname))
        app.run(debug=True, port=args.port, host=args.hostname)
    else:
        print(
            'Running the Gunicorn server with {workers} {args.workerclass}'
            'workers on host {args.hostname} and port '
            '{args.port}...'.format(**locals()))

        sp = subprocess.Popen([
            'gunicorn', '-w', str(args.workers), '-k', str(args.workerclass),
            '-t', '120', '-b', args.hostname + ':' + str(args.port),
            'airflow.www.app:cached_app()'])
        sp.wait()
于 2018-01-18T22:40:53.610 回答
0

转到 AIRFLOW_HOME -> 气流.cfg。它有一个名为 [webserver] 的部分,下面有两个配置属性,如下所示: web_server_ssl_cert = web_server_ssl_key = 如果没有像上面这样的值,则表示 Airflow 网络服务器正在 http 上运行(没有证书)。

要启用 SSL,请使用 .p12 证书(您必须已订购)并使用 openssl 从 .p12 文件中提取证书和私钥。openssl 主要随 Linux 一起提供,因此您可以直接在 linux 终端上运行。

Step1:使用以下命令提取证书 openssl pkcs12 –in /path/cert.p12 -nokeys -clcerts –out /path/mycert.crt

Step2:使用以下命令提取密钥 openssl pkcs12 –in /path/cert.p12 -nocerts –out /path/mykey.key

第3 步:生成证书和密钥后,更新 airflow.cfg 的 web_server_ssl_cert 和 web_server_ssl_key。重新启动 Airflow 网络服务器 .. 完成了吗?使用 https 浏览 Airflow UI。

于 2020-01-01T13:03:51.453 回答