我正在使用带有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。
任何指针都会有所帮助!
谢谢!
答案 0 :(得分:1)
Airflow 1.7.0不支持SSL。我刚检查了气流1.7.0的网络服务器代码。代码如下。此函数只是在主机和端口的HTTP上启动flask / gunicorn应用程序。如果您提供证书并将端口提及为443,则只需在http://<host>:443
上启动该应用程序。它不接受SSL密钥和证书。 Airflow 1.7.0的Web服务器功能如下。
最新版本的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()
答案 1 :(得分:0)
解决了这个问题How to enable SSL on Airflow Webserver?,然后回答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
保持Web服务器端口不变。重新启动气流网络服务器,转到https://hostname:port
等。
答案 2 :(得分:0)
转到AIRFLOW_HOME-> airflow.cfg。它有一个名为[webserver]的部分,下面有两个配置属性,如下所示: web_server_ssl_cert = web_server_ssl_key = 如果没有像上面这样的值,则表明Airflow Web服务器在http上运行(没有证书)。
要启用SSL,请使用.p12证书(您必须已订购),然后使用openssl从.p12文件中提取证书和私钥。 openssl通常随Linux一起提供,因此您可以直接在linux终端上运行。
步骤1:使用以下命令提取证书 openssl pkcs12 –输入/path/cert.p12 -nokeys -clcerts –输出/path/mycert.crt
第二步:使用以下命令提取密钥 openssl pkcs12 –输入/path/cert.p12 -nocerts –输出/path/mykey.key
第3步:生成证书和密钥后,请更新airflow.cfg web_server_ssl_cert和web_server_ssl_key。重新启动Airflow Web服务器。 完成。使用https浏览Airflow UI。