Aipo に Let's Encrypt の SSL証明書を適用

前回、Aipo の StartSSL 証明書更新の話を書きましたが、StartSSL は不正認定されてしまい、Chrome などからアクセスできなくなったので、無料かつ正当な(とされる)Let's Encrypt の証明書に入れ替えました。やはり少しハマったので記録を残します。

Aipo への Let's Encrypt SSL 導入については、こちらに記事があるのですが、Apache の稼働を前提としており、Tomcat のみの Aipo の標準的な環境ではうまくいきません。Let's Encrypt SSL の導入を自動的に行う certbot-auto というユーティリティが httpd (Apache) の存在を前提としているようで、動かないのです。
代わりに、やはり Certbot が提供している certbot というユーティリティで手動で証明書を生成します。手順はこちら(英語)(CentOS 7 の場合)です。具体的には
$ certbot certonly --webroot -w /usr/local/aipo/tomcat/webapps/ROOT -d ドメイン名
とします。
ここで、/usr/local/aipo/tomcat/webapps/ROOT は、Webアプリのルートで、外部からドメイン名の URL に http(s) アクセスする際のルートディレクトリです。
このコマンドがうまくいけば、/etc/letsencrypt/live/ドメイン名/ に pem 形式の証明書ができます。Tomcat が使う証明書はキーストア形式なので、段階をふんで変換します。
PKCS#12形式への変換
$ cd /etc/letsencrypt/live/ドメイン名/
$ openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out ssllets.p12
Enter Export Password:
Verifying - Enter Export Password:
キーストア形式への変換
$ /usr/local/aipo/jre/bin/keytool -importkeystore -destkeystore ssllets.keystore -srckeystore ssllets.p12 -srcstoretype PKCS12
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
生成されたキーストアファイルを /usr/local/aipo/tomcat/conf/server.xml で指定したパスに(それまで使っていたものはバックアップの上)コピーします。(デフォルトのパスは /root/.keystore )server.xml 内のキーストア用パスワードは適宜書き換えます。
Aipo をシャットダウンし、再スタートすると新しい証明書でアクセスできるようになるはずです(私の環境だと Safari で問題が起きるのですが、他のブラウザや別のデバイスの Safari からはアクセスできるので、キャッシュか何かの問題らしい)。
Let's Encrypt の証明書は3ヶ月で失効するので、ここまでの手順を cron で自動実行するようにしておかないと面倒ですが、それはまた別の機会に...

関連記事:Let’s EncryptのSSL証明書で、安全なウェブサイトを公開@さくらのナレッジ

Commenti

Post popolari in questo blog

ローカル変数は使用不可

Redmine + Subversion インストールの記録