6
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

Rundeckの前段にnginxを配置してhttps化する

はじめに

RundeckはデフォルトだとWebの管理画面はhttpなんだけど、まともに使うならhttps化しておきたい。

いちおう、Rundeck単体でもSSLの設定することは可能っぽいんだけど、
http://rundeck.org/docs/administration/configuring-ssl.html

見るからにちょっと、めんどくさそうで、Rundeck初心者には敷居が高そうである。

ところで、Rundeckの前段にnginxを配置してhttps化する構成なら大体nginxの知識+αでなんとかなりそうなので、nginxでSSL復号化する構成にしてみる。

RundeckのSSL復号化をnginxにオフロードする

前段のnginxでSSL復号化する構成については、公式wikiに以下のような簡単な説明があるんだけど、
https://github.com/rundeck/rundeck/wiki/FAQ#can-i-do-ssl-offloading

Yes, If you have load balancer or reverse proxy, you can let them handle SSL and just do http between them and RunDeck servers:
* Set up RunDeck as http
* in profile file, add option -Drundeck.jetty.connector.forwarded=true to RDECK_JVM
* Set framework.rundeck.url and grails.serverURL to use https

簡単すぎである。

これを読み解いて何を言ってるかを理解したので、補足説明しておく。

  • Set up RunDeck as http

これは、読んだまま、普通にhttpの構成として、Rundeckをセットアップする。

  • in profile file, add option -Drundeck.jetty.connector.forwarded=true to RDECK_JVM

これは /etc/rundeck/profileRDECK_JVM という起動オプションを設定している変数があるので、 それに -Drundeck.jetty.connector.forwarded=true を追加しろということ。

...

RDECK_JVM="-Djava.security.auth.login.config=$JAAS_CONF \
           -Dloginmodule.name=$LOGIN_MODULE \
           -Drdeck.config=$RDECK_CONFIG \
           -Drundeck.server.configDir=$RDECK_SERVER_CONFIG \
           -Dserver.datastore.path=$RDECK_SERVER_DATA/rundeck \
           -Drundeck.server.serverDir=$RDECK_INSTALL \
           -Drdeck.projects=$RDECK_PROJECTS \
           -Drdeck.runlogs=$RUNDECK_LOGDIR \
           -Drundeck.config.location=$RDECK_CONFIG/rundeck-config.properties \
           -Djava.io.tmpdir=$RUNDECK_TEMPDIR \
           -Drundeck.server.workDir=$RUNDECK_WORKDIR \
           -Dserver.http.port=$RDECK_HTTP_PORT \
           -Drundeck.jetty.connector.forwarded=true"
  • Set framework.rundeck.url and grails.serverURL to use https

これは /etc/rundeck/framework.propertiesframework.rundeck.url のスキームを https にしてねというのと、

/etc/rundeck/framework.properties

...

framework.server.name = localhost
framework.server.hostname = localhost
framework.server.port = 4440
framework.server.url = http://rundeck.example.com:4440
framework.rundeck.url = https://rundeck.example.com

/etc/rundeck/rundeck-config.properties にある grails.serverURL のスキームも https にしてね

/etc/rundeck/rundeck-config.properties
...

# change hostname here
grails.serverURL=https://rundeck.example.com

ということらしい。

あとはnginxのSSLを復号化する設定はこんなかんじ。SSL証明書の作り方とかは割愛。特にRundeck関係ないので知らなければぐぐってくれ。

/etc/nginx/nginx.conf
...

http {
    ....

    server {
        listen 443;
        set_real_ip_from   '10.0.0.0/8';
        real_ip_header     X-Forwarded-For;
        proxy_set_header   Host $host;
        proxy_set_header   X-Forwarded-Proto https;

        ssl on;
        ssl_certificate /etc/nginx/keys/server.crt;
        ssl_certificate_key /etc/nginx/keys/server.key;

        server_name rundeck.example.com;
        ....

        location / {
            proxy_pass http://rundeck:4440;
        }
    }
}

これで https://rundeck.example.com でアクセスできるようになった。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
6
Help us understand the problem. What are the problem?