LoginSignup
6

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-02-10

はじめに

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 でアクセスできるようになった。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6