自由研究
[EX-CLOUDでつくる]

EX-CLOUDでつくる、Aipoを使ったグループウェアサーバ(2017年版)

自由研究
テクニカルサポート

稀に良くAipoの導入に関するお問い合わせはいただくのですが、『EX-CLOUDでつくる、Aipoを使ったグループウェアサーバ』という2012年11月に投稿されている記事があるので、こちらを参考情報としてご案内しています。

EX-CLOUDでつくる、Aipoを使ったグループウェアサーバ

自由研究
テクニカルサポート

Aipoを使ったグループウェアサーバーの構築手順をまとめました。インストール、アクセス設定、DNSゾーン情報、nginxの設定まで丁寧に解説しています。エクスライトと組み合わせれば非常に安価にグループウェアサーバを構築することが可能です。

ですが、、、案内するにはちょっと古い記事なのと、掲載されているAipoもEX-CLOUDも当時よりバージョンアップしているので最新の環境で導入確認を行ってみましたd(>_・ )

Aipoとは!?

TOWN株式会社(旧株式会社エイムラック)が開発されている、オープンソースのグループウェアです。
オープンソース版もあり、商用のグループウェアと遜色ない機能が提供されているのでスタート
アップ企業様などで商用のグループウェアを導入するほどの予算がない場合など、EX-CLOUD
のクラウドVPSと組み合わせれば非常に安価にグループウェアサーバを構築することが可能です。

また、EX-CLOUDはAipoの稼働実績もあり、ホスティングパートナーとしても登録いただいております。

今回の環境はクラウドVPSプランのCentOS7でインストールしてみます。
(前回の記事はCentOS5でPlesk搭載プランです)

コマンドラインの操作になりますがAipoにはインストーラーが用意されているため、
殆どコピペで導入いただけます。

応用編として後述するSSL設定などをされる場合は少しコマンドラインの知識があると良さそうです。
(viで編集など)

手順においてEX-CLOUD環境とは異なる他環境でも応用出来る箇所もあるかと思いますが、
EPELレポジトリの有効化や、firewalldを編集したり等が必要な場合があります。

また、Aipoを導入するサーバーですが、メモリ1GB以上を推奨しているためEX-CLOUDの場合はクラウドVPS2以上を推奨いたします。
※VPS-1はメモリ1GB,VPS-2はメモリ2GBのサービスです
EX-CLOUD クラウドVPS仕様

STEP1.Aipoのインストール

1)必要なライブラリをインストールする

# yum install gcc nmap lsof unzip readline-devel zlib-devel
既に入ってるライブラリもありますが、新規環境であれば構わずコピペしてOKです。
-yオプションを末尾に加えると確認が入らず強制的にyesとして進みます

2)Aipoのパッケージダウンロード

# cd /usr/local/
# wget http://ymu.dl.osdn.jp/aipo/64847/aipo-8.1.1-linux-x64.tar.gz
Aipo のインストール先を「/usr/local/aipo」としてますが、任意のディレクトリで構いません。
本記事執筆時はaipo-8.1.1が最新版ですが、最新のバージョンは以下URLからご確認ください。
https://ja.osdn.net/projects/aipo/releases/

3)パッケージの解凍とインストーラーの実行

# tar -xvzf aipo-8.1.1-linux-x64.tar.gz
# cd aipo-8.1.1-linux-x64
# sh installer.sh <<インストール先>>
インストール先を省略すると /usr/local/aipo にインストールされます

インストーラーのシェル実行後、しばらくして次のようにアクセスURLなどが表示されればインストール完了です。

=============================================
Aipo のインストールが完了しました。
バージョン     : 8.1.1.0
インストール先   : /usr/local/aipo
PostgreSQLユーザー : aipo_postgres
PostgreSQLパスワード: *********

アクセス先:
http://***.***.***.***:81
ID/PASSWORD:
admin/admin

起動方法:
/usr/local/aipo/bin/startup.sh
停止方法:
/usr/local/aipo/bin/shutdown.sh

STEP2.Aipoの起動

アクセス先もIDとパスワードも書いてあるし、『アクセスしたろ(*´¬`)』と思っても繋がりません。
起動方法に書いてあるスクリプトによる起動が必要です。

# /usr/local/aipo/bin/startup.sh
Starting Aipo 8.1.1.0.
Access URL : http://***.***.***.***:81

Starting Aipoと表示したし『起動したな!アクセスしたろ(*´¬`)』と思ってもまだ繋がりません。
EX-CLOUDのCentOS7は標準でiptablesによるアクセス制限が施されていて、22番ポート(SSH)以外繋がりません。

そのため、iptablesのルールを編集するか無効化して、81番ポートでの接続が出来るようにします。
今回はiptablesを無効化します。

#  systemctl stop iptables
ちなみにCentOS7は一般的にfirewalldによるアクセス制限が標準なのですが、
EX-CLOUDではfirewalldを無効化し、iptablesが標準になっています。

今度こそ、http://***.***.***.***:81 でアクセスしてみてAipoのTOPページが表示されれば利用可能です。
※IPではなく、http://FQDN:81 でも名前解決していればもちろんアクセス可能です。

 

ちなみに、Aipoは81番ポートでTomcatのWebアプリケーションとして動いているので、
http://***.***.***.*** や、 http://FQDN/ でアクセスした場合はhttpd(apache)が応答します。

httpdは別のポートに変更したり、Aipo以外でウェブサーバを利用しない場合はhttpdを落として
Aipoを80番で起動するようにすればポート指定しなくても接続可能になります。

Tomcatの起動ポート変更は次のSTEP以降で記載の応用編を参考にしてください(かなり文末付近にあります)。

STEP3.AipoにSSLを設定する(応用編)


Aipoのインストーラーに同梱されているkeytool ( 鍵と証明書の管理ツール)を利用します。

# cd /usr/local/aipo/jre/bin
# ./keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -keystore /usr/local/aipo/tomcat/.keystore
ここまで打つと、パスワードを設定するよう問われますので2回、同じものを入力してEnterを押してください。
Enter keystore password:
Re-enter new password:
What is your first and last name? 
  [Unknown]:   この設問、自身の名前を入れたくなっちゃいますが証明書を設定するFQDNを入れてください(example.comなど)
What is the name of your organizational unit?
  [Unknown]:
What is the name of your organization?
  [Unknown]:
What is the name of your City or Locality?
  [Unknown]:
What is the name of your State or Province?
  [Unknown]:
What is the two-letter country code for this unit?
  [Unknown]: 
Is CN=example.com, OU=******, O=******, L=******, ST=******, C=** correct?
  [no]:  y
一通り入れると確認のため、全項目が表示されます。問題なければ y を押してEnterを押してください。
最後にTomcatのパスワードを入力するよう表示されますが、空欄で設定すると上記のkeystoreと同じものになります。
Enter key password for (RETURN if same as keystore password):

Tomcatの設定ファイル( /usr/local/aipo/tomcat/conf/server.xml )を編集し、上記で作成したキーストアをSSL証明書として設定します。

<!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" 
       maxThreads="1000" SSLEnabled="true" scheme="https" secure="true" 
        clientAuth="false" sslProtocol="TLS" /> -->

上記箇所のコメントアウト <!-- --> を解除し、SSL証明書のパスを keystoreFile="  "として指定します。
編集後は次のような記述になります 
<<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
        maxThreads="1000" SSLEnabled="true" scheme="https" secure="true"
        clientAuth="false" sslProtocol="TLS" keystoreFile=".keystore" keystorePass="{設定したパスワード}" />

変更後、Aipoを再起動し、記述が正しければ8443ポートがLISTENとなり、https://FQDN:8443 によるSSL通信が可能となります。

# sh /usr/local/aipo/bin/shutdown.sh
# sh /usr/local/aipo/bin/startup.sh
→ shutdown.sh と startup.sh で再起動
# ss -nat |grep 8443
Cannot open netlink socket: Protocol not supported
LISTEN     0      0           :::8443                     :::*

上記手順は自己署名証明書のSSL証明書となりますので、https://FQDN:8443 で接続した際にブラウザから警告が表示されます。
外部に公開せず、自社内のみの利用などであれば自己署名証明書でも問題はあまりありませんが、外部にも公開する用途であれば警告が表示されないSSL証明書のほうが好ましい場合があります。

警告を表示させないようにする方法として認証局が発行したSSL証明書を適用することが挙げられます。

ここではネットワーク・サーバーベンダーなどがスポンサーとなっている認証局が無償で発行するSSL証明書(Let’s Encrypt) の取得から設定までをご案内いたします。
※発行機関(英語サイト):https://letsencrypt.org/

1)Certbotクライアント(証明書取得・管理ソフトウェア)をインストールする

# cd /usr/local/ → Aipoに合わせて作業ディレクトリを「/usr/local/」としてますが、任意のディレクトリで構いません。
# wget https://dl.eff.org/certbot-auto → クライアントソフトのダウンロード
# chmod a+x certbot-auto → ダウンロードしたファイルに実行権を与える
# ./certbot-auto → クライアントソフトの実行

2)証明書の申請情報を入力し、証明書の取得と設定をする

クライアントソフトを実行するとパッケージのインストールやアップグレードが行われ、
その過程で証明書に設定するFQDNやメールアドレスの入力が求められます。

name(s) (comma and/or space separated)  (Enter 'c' to cancel):
上記が表示されたらFQDNを入力してください(例:example.comなど)

Enter email address (used for urgent renewal and security notices) (Enter 'c' tocancel):
上記が表示されたら受信可能なメールアドレスを入力してください。
すぐにメールが送信されるものではありませんが、証明書の更新が行えないときなどの通知先となります。
-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: 
上記は約款への同意入力となりますので、同意される場合 a(A) を入力後、Enterを押してください。

Certbotクライアントによってはhttpからhttpsへのリダイレクトを行うかなど、その他の設問が表示される場合もありますが、適宜選択していけばインストールとウェブサーバへのSSL設定までも完了します。

https://FQDN でアクセスし、証明書が適用されていれば設定完了です。
デフォルトでは有効期限は90日です。 letsencrypt-auto renewコマンドで自動更新設定が可能ですが、ここでは省略いたします。

なお、指定したFQDNの正引き(DNSのAレコードの参照)したIPアドレスの80番と443番ポートに接続することでドメイン所有者であることの認証が行われますので、ポートが変更されていたり閉じている、名前解決が出来ないドメインでは証明書取得に失敗します。
※ドキュメントによると–http-01-port 81 や –tls-sni-01-port 8443 のオプションによってポート指定は可能なようです。

3)取得した証明書をウェブアプリケーション(Aipo)に設定する

設定完了したSSLはApacheに対するものでhttps://(443ポート)で接続した際に参照されますが、AipoのSSL通信はデフォルトで8443番ポートになりますのでSTEP3.の最初に書いた設定(/usr/local/aipo/tomcat/conf/server.xml を編集し、httpsでの接続を許可する)を行ってもhttp://FQDN:8443では自己署名証明書が参照されるため継続して警告が表示されます。

そのため、ウェブアプリケーションにもSSL証明書を適用するにはTomcat用の証明書ファイルに変換してあげる必要があります。

取得したLet’s Encryptの証明書は /etc/letsencrypt/live/(FQDN)/以下に保存されています。
・証明書
/etc/letsencrypt/live/(FQDN)/cert.pem
・証明書+中間CA証明書
/etc/letsencrypt/live/(FQDN)/fullchain.pem
・秘密鍵
/etc/letsencrypt/live/(FQDN)/privkey.pem
・中間CA証明書
/etc/letsencrypt/live/(FQDN)/chain.pem

これらのファイルはPEM形式ですのでそのままではTomcat用のキーストアファイルが生成でません。

キーストアファイルを生成するため、PEM形式のものをopennsslコマンドでPKCS#12形式に変換し、
変換したPKCS#12形式の鍵ファイルをキーストア形式に出力します。
ここではssllets.p12というファイル名で出力していますが任意のファイル名で構いません。

# openssl pkcs12 -export -in (fullchain.pemのパス) -inkey (privkey.pemのパス) -out ssllets.p12
Enter Export Password:
Verifying - Enter Export Password:
証明書+中間CA証明書と秘密鍵をPKCS#12形式に変換します。
設定したパスワードはキーストア形式への変更時に使います。

PKCS#12形式のファイル(ここではssllets.p12)が作成されたら /usr/local/aipo/jre/bin/keytool を用いてキーストア形式のファイルを出力します。
ここではtomcat.keystoreというファイル名で出力していますが任意のファイル名で構いません。

# ./usr/local/aipo/jre/bin/keytool -importkeystore -destkeystore tomcat.keystore
-srckeystore (PKCS#12形式ファイルのパス) -srcstoretype PKCS12
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
キーストアファイルのパスワードを2回入力し、変換元のPKCS#12形式のパスワードを入力したらEnterを押します。
Entry for alias 1 successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelled
インポート成功の上記表示がされればtomcat.keystoreが生成されます。

Tomcat用のキーストアファイルを生成したら上述の自己署名証明書の説明と同じように設定ファイル( /usr/local/aipo/tomcat/conf/server.xml )に証明書のパスとパスフレーズを設定します。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="1000" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="キーストアのファイルパス" keystorePass="設定したパスワード" />
ちなみに、8443が指定ポートとなりますのでFQDNのみでアクセスされたい場合はConnector port="443"にすれば
https://FQDNでのアクセスが可能になります。
※要Aipo再起動

また、apacheを起動している場合は443をウェブサーバが使用しますのでウェブサーバのポートを変えるか、
ウェブサーバを利用していない場合はapacheを落としてください。

ウェブサーバを落とす運用の場合はサーバ再起動によるウェブサーバの自動起動も無効にしたほうが良さそうです。
# systemctl disable httpd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
# systemctl list-unit-files | grep httpd
httpd.service  disabled

自動化は出来なくも無さそうですが、、、
Let’s Encryptの証明書を3ヶ月毎に変換したり入れ替えるが少々大変ですねΣ(´∀`;)

シマンテックやジオトラスト等の認証局なら2年や3年単位の証明書も発行しているため、長期的な運用の場合は有償でもこれらの認証局が発行されている証明書を設定したほうが運用コストが減りそうです。

当社ではSSLサーバー証明書のクーポンも格安で販売しておりますので、
Aipo用のサーバーと合わせ、有償SSL証明書をご検討の際はデータホテルSSLも合わせてご検討ください。

・低価格で提供 格安SSL証明書クーポン – データホテルSSL
https://datahotel.jp/service/sslcoupon/

また、Let’s Encryptではなく、その他の認証局から証明書を取得申請する場合、CSRが必要となります。
認証局に申請するCSRをSTEP3の冒頭で作成したKeystoreを使って生成する場合は以下となります。

# cd /usr/local/aipo/jre/bin
# ./keytool -certreq -alias tomcat -keystore /usr/local/aipo/tomcat/.keystore -file {任意のファイル名}.csr
取得した証明書はLet's Encryptの説明同様、キーストア形式に変換が必要です

この記事を書いた人

テクニカルサポート

テクニカルサポートを得意とするエクスクラウドのサポートスタッフ。

この記事のタグ

オススメの記事

この記事を読んだ人にオススメのサービス

エクスクラウドのクラウドVPS

メモリ2GBで950円!最大72GBまで拡張!SSD搭載でメモリ量も多いため、WordPressなどのCMS利用にオススメです。負荷分散や冗長化についてのインフラ設計コンサルティング&サーバー構築代行を技術スタッフが承ります。オプションでクラウド型WAFが1,500円/月で提供、セキュリティ対策も対応に導入可能です。

ページトップへ