マグカップの裏

プログラムとか、思ったこととか、料理とか

CentOS7.2にAjentiをインストールしてHTTPSでやり取りできるようにした話

ConoHaが45日間無料キャンペーンをやってた

私も愛用しているVPSサービスのConoHaが、1GBプランを45日間も無料にするキャンペーンをやってます。今週の金曜日まで。

VPSならConoHa|登録者数8万人突破 - 期間限定キャンペーン実施中

上の方に書いてあるはず。

私はもうConoHaのVPSは持ってましたが、お遊びに作ってみることに。こうしてVPSは増えていくのだろう。

サーバ管理環境を整えよう

今運用しているConoHaVPSはCloud9からコンソールを叩いたりButterflyを使ったりしている。でもこのやり方が必ずしもベストとは思えないし、何より管理をするツールを使うべきだ。 そこでOSSのAjentiを使うことにした。

f:id:j_osker:20160614075103j:plain

Ajenti Server Admin Panel

なんだかAdobeのソフトのようなアイコン。

これは管理者パネルとか呼ばれるタイプのソフトウェアで、ブラウザから利用できる。 具体的にはnginxのコンフィグを追加、更新、Apacheもできるし、他のサービスの再起動などもできる。ユーザの追加なども可能で、CUIになれてない管理者(そんなものがいたら僕は怖いけど)でも利用できる。他にもターミナルを開くこともできる。素晴らしい。

CentOS7.2にいれて使いたいが、問題が

もしかしたら他のCentOSでもそうかもしれないし、Redhatでもそうかもしれないけど問題がある。 SSL通信を有効にすると使えないのだ。一応Issueには上がっているらしい。 直す気があるのかとか、いつなおるか、とかは知らないけど、これを使う上では大問題だ。 ターミナルが開ける上rootにもなれてしまう。平文でのやり取りは辞めるべきだ。 それを解決した話。用はただのリバースプロキシだけど、色々HTTPヘッダの設定もしてあげないと正常に動作しない。

まずはインストール

公式ページに従えば簡単です。

#wget http://repo.ajenti.org/ajenti-repo-1.0-1.noarch.rpm
#rpm -i ajenti-repo-1.0-1.noarch.rpm 
#yum install ajenti 
#service ajenti restart

これだけでもとりあえずは動くはずだ。だけど先述の通りSSLが有効になっていると動かないので無効にする。

vim /etc/ajenti/config.json

で開いて、

"ssl": { "enable": false,

こんな感じで書き換えてあげる。systemctl stop firewalldとかしてからhttp://serverIP:8000とかにアクセスすれば動作してることがわかる。 さて、ここからはSSL化の作業。

Nginxを使ってリバースプロキシを作る。

何の変哲もないリバースプロキシを立てるわけですが、色々オプションをつけていますね。

server {
    listen                      443 ssl;
    server_name                 server.domain.com;
    access_log                  /var/log/nginx/access.log;
    error_log                   /var/log/nginx/error.log;

    ssl_certificate             /ssl_path/server.crt;
    ssl_certificate_key         /ssl/server.key;
    ssl_session_timeout         5m;
    ssl_protocols               SSLv3 TLSv1;
    ssl_ciphers                 ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers   on;

    location / {
        rewrite (/ajenti)$ / break;
        rewrite /ajenti/(.*) /$1 break;

        proxy_pass              http://127.0.0.1:8000;
        proxy_redirect /        /ajenti/;
        proxy_set_header        Host             $host;
        proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_http_version      1.1;
        proxy_set_header        Upgrade          $http_upgrade;
        proxy_set_header        Connection       $http_connection;
        proxy_set_header        Origin           http://$host;
    }

    location /ghost {
        proxy_pass              http://127.0.0.1:2368;
        proxy_redirect          off;
        proxy_set_header        Host             $host;
        proxy_set_header        X-Real-IP        $remote_addr;
        proxy_set_header        X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

}

locationとかは必要なら変えてください。

firewalldの設定を変える

#firewall-cmd --permanent --add-service=http
#firewall-cmd --permanent --add-service=https
#systemctl restart firewalld

こんな感じですね。使ってる様子でもスクショ取ろうかと思ったけど色々公開するとまずい気がする情報も載ってて隠すのも面倒なので公式ページでも見てください() ちなみにデフォルトのIDとパスワードはroot、adminです。ちゃんと変えましょう。