no-image

さくら VPS の Aipo 8.1.1 を SSL 化する

前回の記事でさくらの VPS 上に Aipo を構築した。

続いて HTTPS 化する作業に入る。参考とした記事は次の通り。

さくらの共有 SSL は VPS では使えないようなので、メインサイトのサブドメインを使うことにした。

さくらの VPS コントロールパネルから「ネームサーバ登録」を開く。

controlpanel

「ドメイン編集」->「ゾーン編集」->「変更」と入って、「エントリの追加と変更」から「エントリ名」に "aipo.example.com", 「種別」に「IPアドレス(A)」、「値」に VPS の IP アドレス、「DNS チェック」と「TTL の指定」はデフォルトの「する」「チェックなし」として新規登録。

ここで念のため、http://aipo.example.com/ を Web ブラウザで開いてみるか、nslookup で VPS の IP アドレスが引けているかを確認しておく。

Let's encrypt で証明書を取得する

今回は Let's encrypt で証明書を取得することにする。

まずインストールを行って、証明書を取得する。

# yum install certbot
...(略)...
Is this OK? [y/d/N]: y
...(略)...
# certbot certonly --standalone

PEM を Tomcat で使えるキーストア形式に変換する

Aipo を動かしているのは Tomcat なので、それに合わせて取得した証明書を変換する。

# cd /etc/letsencrypt/live/aipo.example.com/
# openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out ssl.p12
Enter Export Password: *****
Verifying - Enter Export Password: *****
# /usr/local/aipo/jre/bin/keytool -importkeystore -destkeystore tomcat.keystore -srckeystore ssl.p12 -srcstoretype PKCS12
Enter destination keystore password: #####
Re-enter new password: #####
Enter source keystore password: *****
Entry for alias 1 successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed orcancelled

Aipo の Tomcat にキーストアファイルを設定する

/usr/local/aipo/tomcat/conf/server.xml を vi 等で編集する。

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

コメントアウトされているこの部分を次のように書き換える。

 <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
 maxThreads="1000" SSLEnabled="true" scheme="https" secure="true"
 clientAuth="false" sslProtocol="TLS" keystoreFile="/etc/letsencry
pt/live/aipo.example.com/tomcat.keystore" keystorePass="#####" />

これで Aipo を一度 shutdown して startup すれば無事に作業完了。

# /usr/local/aipo/bin/shutdown.sh
Stopping Aipo 8.1.1.0.
# /usr/local/aipo/bin/startup.sh
Starting Aipo 8.1.1.0.
Access URL : http://XXX.XXX.XXX.XXX

これで https://aipo.example.com/ にアクセスすると無事に Aipo の画面が表示されるはず。

と思いきや、なぜかアクセスできず。"lsof -i:https" を実行してみるとポートさえ開いていない。

設定を見直したり環境を代えてみたりと 3 日間ほど苦戦した結果、/usr/local/aipo/tomcat/conf/server.xml のコメントアウトされている記述にある

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol""

の部分の引用符が 2 重になっているのが原因だった。これでも起動時にエラーも出ず、http でのアクセスは通常通り行えたので気付くのが遅れてしまった。